HarmonyOS-ArkUI V2装饰器: @Provider和@Consumer装饰器:跨组件层级双向同 ...

金歌  论坛元老 | 2025-4-14 15:32:29 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 1692|帖子 1692|积分 5076

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
作用

我们在之前学习的那些控件中,各有特点,也各有缺陷,至今没有痛痛快快的出现过真正能跨组件的双向绑定的装饰器。
比如


  • @Local装饰器,不能跨组件
  • @Param装饰器呢,能跨组件传递,但是仅仅就是下一层组件接收参数。另外,它是单向传递,不可被重新赋值。如果您非要改值则用@Once修饰,改了父组件也不会同步。非要达成双向传递的结果,那就搞个@Event写回调函数,让父组件实现,完成改值的能力。比较麻烦。

我们有时间必要一种能力是,对于组件而言。爷爷组件直接传给孙子组件,父组件不必要某状态变量。而且孙子组件如果改了值,或者爷爷组件改了值,双向同步给相互。从而是界面革新逻辑正常。
这个@Provider和@Consumer装饰器的共同使用,就是来完成这种结果的。
使用方式

先容

@Provider必要与@Consumer共同使用。两者通过一个key创建联结。此key体如今,这两个装饰器都接收一个叫aliasName的参数,用来指定其修饰的变量的别名。之后靠这个别名来寻找绑定关系。

@Provider属性装饰器
阐明
装饰器参数
aliasName?:string, 别名,缺省时默以为属性名,建议最好写这个参数
支持类型
自界说组件中成员变量。属性类型可以为number,string, boolean, class, Array, Date, Map, Set 等类型。支持装饰箭头函数。
从父组件初始化
禁止
本地初始化
必须本地初始化
观察能力
能力等同于@Trace。变革同步给对应的@Consumer

@Consumer属性装饰器
阐明
装饰器参数
aliasName?:string, 别名,缺省时默以为属性名,向上查找近来的@Provider,建议最好写这个参数
可装饰的变量
自界说组件中的成员变量。属性的类型可以是number,string,boolean,Data,Array,Map,Set等类型,支持箭头函数。
从父组件初始化
禁止
本地初始化
必须本地初始化
观察能力
</

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

金歌

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表