- 需求的场景描述(希望解决的问题)
因为官方没有为 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) |
@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。