上文我們了解了@Local裝飾器 ,講明了Local裝飾器不允許外部傳入值對其進行初始化。詳見:
HarmonyOS-ArkUI V2裝飾器@Local裝飾器:組件內部狀態-CSDN博客。
但總有場景是需要外部組件傳值過來,然后本組件接收這個值這種場景的。而且很多情況下,一個狀態變量的作用范圍會是會傳遞到子組件中,而不是像Local這樣只能在自己所在的組件中發揮作用。對于這種場景我們用@Param裝飾器可以搞定。
裝飾器說明
@Param裝飾器是一個單向傳遞的控件
首先我們先了解一下什么是所謂的單向傳遞。
理解狀態變量在組件間的單向傳遞
如下如所示
裝飾器特性說明
裝飾器名 | 裝飾器參數 | 能否本地修改 | 同步類型 | 被裝飾變量的初始值 |
@Param | - | 不能,修改值需要配合@Event裝飾器能力完成閉環 | 單向同步, 子組件改,子組件知道,父組件不知道 | 原則上本地必須初始化,但是如果您就是不進行初始化也行,則和@Require裝飾器配合使用。要求外部必須傳入進行初始化。 |
- 被@Param修飾的變量,能夠在初始化自定義組件的時候從外部傳入,此時如果外部數據源發生了變化,則數據源的修改會同步到@Param修飾的狀態變量。
- @Param修飾的變量原則上要進行初始化,但是如果你就是不進行初始化,也行,加上@Require裝飾器,讓外部必須傳來一個值!但是!您不能再對它進行賦值了,@Param不允許在組件內部直接修改變量本身。