作用
我們在之前學習的那些控件中,各有特點,也各有缺陷,至今沒有痛痛快快的出現過真正能跨組件的雙向綁定的裝飾器。
比如
- @Local裝飾器,不能跨組件
- @Param裝飾器呢,能跨組件傳遞,但是僅僅就是下一層組件接收參數。另外,它是單向傳遞,不可被重新賦值。如果您非要改值則用@Once修飾,改了父組件也不會同步。非要達成雙向傳遞的效果,那就搞個@Event寫回調函數,讓父組件實現,完成改值的能力。比較麻煩。
我們有時候需要一種能力是,對于組件而言。爺爺組件直接傳給孫子組件,父組件不需要某狀態變量。并且孫子組件如果改了值,或者爺爺組件改了值,雙向同步給彼此。從而是界面刷新邏輯正常。
這個@Provider和@Consumer裝飾器的配合使用,就是來完成這種效果的。
使用方式
介紹
@Provider需要與@Consumer配合使用。兩者通過一個key建立聯結。此key表現在,這兩個裝飾器都接收一個叫aliasName的參數,用來指定其修飾的變量的別名。之后靠這個別名來尋找綁定關系。
@Provider屬性裝飾器 | 說明 |
裝飾器參數 | aliasName?:string, 別名,缺省時默認為屬性名,建議最好寫這個參數 |
支持類型 | 自定義組件中成員變量。屬性類型可以為number,string, boolean, class, Array, Date, Map, Set 等類型。支持裝飾箭頭函數。 |
從父組件初始化 | 禁止 |
本地初始化 | 必須本地初始化 |
觀察能力 | 能力等同于@Trace。變化同步給對應的@Consumer |
@Consumer屬性裝飾器 | 說明 |
裝飾器參數 | aliasName?:string, 別名,缺省時默認為屬性名,向上查找最近的@Provider,建議最好寫這個參數 |
可裝飾的變量 | 自定義組件中的成員變量。屬性的類型可以是number,string,boolean,Data,Array,Map,Set等類型,支持箭頭函數。 |
從父組件初始化 | 禁止 |
本地初始化 | 必須本地初始化 |
觀察能力 </ |