halo_951
halo_951
  • 发布:2020-06-03 05:46
  • 更新:2021-10-09 10:23
  • 阅读:8616

使用 typescript 开发 uni-app

分类:uni-app

最近刚接触 uni-app, 准备使用 ts 作为脚本语言,(毕竟代码提示比js要实用太多)。
没有意外,踩坑了。uni 为了在vue基础上兼容 微信小程序, 将小程序变量改写为 data(){ return {}; }. 导致 仅使用 @Prop(),无法正常更改变量值.

然后,花了点时间,扩展了两个vue装饰器,用来解决 成员变量写入data(), 用的话安装下 yarn add uni-property-decorator . 用 @Data()@DataInit 替换 @Prop() 注解.

原因: @Prop 是在 class实例化的时候将变量转化为vue变量的,监听的是成员变量本身的更新。不会触发data变动。而uni的逻辑额外将data中变量转化为可监听的vue变量,每次读写值的时候其实都相当与读写的data(){}中的变量. 两个作用对象不一样。

最后分享下,新增的装饰器源码,里面有实现逻辑。

github: https://github.com/a951055/uni-property-decorator

(麻烦看到点颗星,谢谢谢谢...)

4 关注 分享
Jackcats 1***@qq.com 泥巴巴 5***@qq.com

要回复文章请先登录注册

迟海

迟海

你理解错了吧,@Prop修饰器的作用是用来在组件中接收参数的,相当于props,声明一个变量只需要直接声明就可以了,private xx = 1 这样
2021-10-09 10:23