一文学会HarmonyOS开发中的V1和V2装饰器

使用V1装饰器,需要使用@Component装饰器装饰组件,而V2需要使用@ComponentV2

V1装饰器
@State:组件自己管理自己的状态,添加@State可让普通变量成为状态变量,变量更新,自动刷新UI。
@Prop:常用于父传子,单向数据流,父组件传递到子组件,不可逆传。
@Prop和@State的区别,父传子也可用@State,但@Prop单向数据流更语义化,而且可以避免组件状态紊乱

@Link:父子双向通信
@ObjectLink/@Observed/@Track:局部刷新UI,性能更好,可用于防止图片闪烁
@Provide/@Consume:虽然官方说是双向通信,但实际上只能从@Provide传值到@Consume,逆向无法传值

V2装饰器
@Local 等价于@State
@Param:父传子,父组件传到子组件,子组件无法修改父组件的值,修改则报错,如果想要修改需要使用@Once + @Param
需要注意:
1.一旦使用once,那么父组件只有在第一次传值给子组件,后续子组件的数据就自己维护了
2.@Param【非@Once】的方式传值,如果子组件通过回调修改了父组件的值,那么这个修改不会同步到子组件
@Require:是否必传
@ObservedV2 + @Tace:可以实现局部刷新,@Tace给需要设置状态变量的属性增加
@Provider() / @Consumer():这一版真正实现了双向通信,功能比V1更强大
@Provider() isScale: boolean = false
@Consumer() isScale: booean = false
其它装饰器
@Event:用来实现父子组件通信的回调函数
// 父组件
getState = (state: string) => { console.log(“状态:”, state) }

// 父传子
TSMTest({
getState: this.getState
})

// 子组件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值