收藏
回答

请教官方回应一下是否要将 setData API 修改为只读

框架类型 问题类型 操作系统 工具版本
小程序 需求 macOS v1.02.1809260

- 需求的场景描述(希望解决的问题)


因为官方没有为 Page 和 Component 提供 computed 和 watch 属性,所以个人通过重新封装 setData 方法实现了这部分功能。


今天换了个电脑,重新安装了开发者工具后发现页面报错,原因是无论是 Page 还是 Component 的 setData 方法都已经变成只读属性,没有办法覆写该属性。


发现 setData 变成只读属性的微信开发者工具:Mac 版 v1.02.1809260

发现 setData 属性可以被覆写的微信开发者工具:Mac 版  v1.02.1809111



- 希望提供的能力


欲哭无泪啊,API 属性修改要不要这么任性啊!两个这么小的版本之间更改了这么重要的特性,项目受影响很大啊!!~~请官方给一个明确的说法吧!希望不要将 setData 变成只读属性。


VM3102:1 thirdScriptError
Cannot assign to read only property 'setData' of object '#<r>'; [Component] Lifetime Method Error @ publicComponents/EnsureLogin/index#a
TypeError: Cannot assign to read only property 'setData' of object '#<r>'
    at r.a (http://127.0.0.1:59968/appservice/deps.js:415:139)
    at r.safeCallback (http://127.0.0.1:59968/appservice/__dev__/WAService.js:14:10521)
    at r.call (http://127.0.0.1:59968/appservice/__dev__/WAService.js:14:10285)
    at t (http://127.0.0.1:59968/appservice/__dev__/WAService.js:14:23150)
    at t (http://127.0.0.1:59968/appservice/__dev__/WAService.js:14:23463)
    at t (http://127.0.0.1:59968/appservice/__dev__/WAService.js:14:23405)
    at c (http://127.0.0.1:59968/appservice/__dev__/WAService.js:14:23473)
    at Function.u.pretendAttached (http://127.0.0.1:59968/appservice/__dev__/WAService.js:15:1227)
    at Object.t.attachView (http://127.0.0.1:59968/appservice/__dev__/WAService.js:16:20286)
    at D (http://127.0.0.1:59968/appservice/__dev__/WAService.js:18:1088)


回答关注问题邀请回答
收藏

4 个回答

  • 僵尸浩
    僵尸浩
    2018-10-17

    建议自己包装一个$setData方法而不是复写系统自带的方法...无论使用什么js框架,复写方法都相当于放弃了自己把控风险的能力。

    2018-10-17
    有用 1
    回复 2
    • 2018-10-17

      诚如你所言,我的修改方法是重新提供了一个方法。

      2018-10-17
      回复
    • 僵尸浩
      僵尸浩
      2018-10-17回复

      很抱歉给你的项目带来如此大的麻烦,但影响已经产生,祝你早日修复。

      2018-10-17
      1
      回复
  • 小程序技术专员-june
    小程序技术专员-june
    2018-10-18

    旧版本的基础库 setData 才是只读的,为了支持自定义组件扩展功能,2.2.3版本开始 setData 已经调整为可覆盖的字段,想问下你在两个版本工具下分别使用的哪个版本的基础库?

    2018-10-18
    有用
    回复
  • 小程序技术专员-SgLy
    小程序技术专员-SgLy
    2018-10-17

    小程序中是否有引入插件?

    2018-10-17
    有用
    回复 2
  • 2018-10-20

    @June @凌云摘星傲苍穹


    经测试,在 SDKVersion v2.2.2 以下,如果页面引用了自定义组件,则 setData 是只读,否则可被覆写。


    SDKVersion v2.2.3 以上,setData 可被覆写。


    代码片段:wechatide://minicode/sWefXimJ7s3e



    附提交个小 bug:


    微信开发者工具 v1.02.1809260,调试基础库选择 2.2.5 时,wx.getSystemInfoSync() 返回的 SDKVersion 是 2.2.4。

    2018-10-20
    有用
    回复
登录 后发表内容