上文我们了解了@Local装饰器 ,讲明了Local装饰器不允许外部传入值对其进行初始化。详见:
HarmonyOS-ArkUI V2装饰器@Local装饰器:组件内部状态-CSDN博客。
但总有场景是需要外部组件传值过来,然后本组件接收这个值这种场景的。而且很多情况下,一个状态变量的作用范围会是会传递到子组件中,而不是像Local这样只能在自己所在的组件中发挥作用。对于这种场景我们用@Param装饰器可以搞定。
装饰器说明
@Param装饰器是一个单向传递的控件
首先我们先了解一下什么是所谓的单向传递。
理解状态变量在组件间的单向传递
如下如所示
装饰器特性说明
装饰器名 | 装饰器参数 | 能否本地修改 | 同步类型 | 被装饰变量的初始值 |
@Param | - | 不能,修改值需要配合@Event装饰器能力完成闭环 | 单向同步, 子组件改,子组件知道,父组件不知道 | 原则上本地必须初始化,但是如果您就是不进行初始化也行,则和@Require装饰器配合使用。要求外部必须传入进行初始化。 |
- 被@Param修饰的变量,能够在初始化自定义组件的时候从外部传入,此时如果外部数据源发生了变化,则数据源的修改会同步到@Param修饰的状态变量。
- @Param修饰的变量原则上要进行初始化,但是如果你就是不进行初始化,也行,加上@Require装饰器,让外部必须传来一个值!但是!您不能再对它进行赋值了,@Param不允许在组件内部直接修改变量本身。