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】。文章转载请联系作者。









评论