@Local裝飾器的作用
@Local裝飾器是用來裝飾組件內的狀態的。而且它修飾的變量可以成為數據源。Local裝飾器,作用跟名字差不多,重點突出了“本地”的特性,也就是使用的范圍僅僅限制在組件內部。且它在初始化的時候必須是在本地進行初始化的,不能在外部組件,同時也禁止了外部組件調用此組件的時候傳入初始化參數。
相比于V1版本的@State裝飾器,@Local裝飾器強調了它的“局部”的特性。
而@State標明被修飾的數據是一個數據源,但是它就沒有限制組件在初始化的時候不可以改它的值。有時候我們在調用組件的時候會出現誤改值,多改值的情況,但是組件本身是阻擋不了調用者怎么調用的。而@Local裝飾器限制了這種行為。
裝飾器名稱 | 參數 | 可裝飾的變量類型 | 初始值 |
@Local | - | number, string, boolean, Array, Map, Set, Date, Object class enum null undefined | 必須在本地進行初始化,并且不能由外部傳入。 |
@Local裝飾器表示的是組件內部的狀態,使得自定義組件的內部變量具有觀測變化的能力。有以下幾個點需要注意
- Local是V2的組件,只能在@ComponentV2裝飾的自定義組件中使用。
- 被@Local修飾的變量無法在外部進行初始化,因此必須在組件內部進行初始化。
- 當@Local修飾的變量發生變化時,那么使用到它的界面也會發生變化。
- @Local裝飾器支持觀測的類型有class, enum, Object, number, string, boolean基礎變量,和 Array,Set,Map,Date等內嵌類型。
- @Local的觀測范圍僅僅限制在被修飾的變量本身而已,
- 當被修飾的變量是number, string, boolean基礎類型時,能夠觀測的是變量的復制行為。
- 而當修飾的是class, enum, Object對象類型時,僅僅能觀測到對此變量整體的賦值。
- 當修飾的是數組時,能夠觀測到數組整體的賦值以及數組元素項的變化。
- 當裝飾的是Array,Set,Map,Date等內嵌類型時,可以觀測到通過API調用帶來的變化。
- @Local支持null,undefined以及聯合類型。
上文中提到的Array,Set,Map,Date等內嵌類型,被觀測的API一覽表
內置類型 | 被觀測API |
Array | push、pop、shift、unshift、splice、copyWithin、fill、reverse、sort |
Set | add, detete, clear |
Map | set, delete, clear |
Date | setFullYear, setMonth, setDate, setHours, setMinutes, setSeconds, setMilliseconds, setTime, setUTCFullYear, setUTCMonth, setUTCDate, setU |