HarmonyOS 5.0 应用开发——V2 装饰器 @once 的使用

【高心星出品】
V2 装饰器 @once 的使用
概念
在鸿蒙 ArkTS 开发中,@Once
装饰器用于实现子组件仅接受父组件传递的初始值,后续父组件数据变化不再同步至子组件。以下是其核心要点:
一、核心作用与规则
初始化同步一次
@Once
与@Param
结合使用,子组件仅在初始化时接收父组件传递的值,后续父组件数据更新时不会触发同步。强制依赖关系
@Once
必须与@Param
搭配使用,单独使用或与其他装饰器(如@Local
)结合会编译失败。装饰顺序不影响功能,
@Param @Once
或@Once @Param
均有效。本地修改支持结合
@Once
后,子组件可以修改@Param
变量值并触发 UI 刷新,此时行为类似@Local
,但仍保留初始值传递能力。
二、适用场景
固定初始值:父组件传递配置参数(如主题色、默认尺寸),子组件仅需初始化时使用。
独立维护状态:子组件基于父组件初始值构建自身状态后,不再依赖外部更新。
案例
父组件(oncepage):点击按钮时,@Local
修饰的count
自增,并通过child3({ count: this.count })
传递最新值给子组件。但子组件仅在首次渲染时接收初始值(如10
),后续父组件的count
变化不会更新子组件。
子组件(child3):点击按钮时,子组件内部count
自增并更新 UI,但父组件的count
始终保持独立状态(例如父组件count
为 15 时,子组件可能显示为 12)。

父子组件同步的数据为数组的时候,使用 @once 和 @param 修改数组中元素不会造成单向同步而是会形成双向同步效果,例如下面案例,父子组件数据会同时改变。


版权声明: 本文为 InfoQ 作者【高心星】的原创文章。
原文链接:【http://xie.infoq.cn/article/2efdd022c42d74ca357b460d8】。文章转载请联系作者。
评论