国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

vue 之 .sync 修飾符示例詳解

2019-11-19 13:59:20
字體:
來源:轉載
供稿:網友

在一些情況下,我們可能會需要對一個 prop (父子組件傳遞數據的屬性) 進行“雙向綁定”。

在vue 1.x 中的 .sync 修飾符所提供的功能。當一個子組件改變了一個帶 .sync 的prop的值時,這個變化也會同步到父組件中所綁定的值。

這很方便,但也會導致問題,因為它破壞了單向數據流。(數據自上而下流,事件自下而上走)

由于子組件改變 prop 的代碼和普通的狀體改動代碼毫無區別,所以當你光看子組件的代碼時,你完全不知道它合適悄悄地改變了父組件的狀態。

這在 debug 復雜結構的應用時會帶來很高的維護成本。于是我們在 vue 2.0 中移除了 .sync 。

但是在實際應用中,我們發現 .sync 還是有其適用之處的,比如在開發可復用的組件庫時。(懵逼○△○)

我們需要做的只是  讓子組件改變父組件狀態的代碼更容易被區分。

于是從 vue 2.3.0 開始,我們重新引入了 .sync 修飾符,但是這次它只是作為一個編譯時的語法糖存在。他會被自動擴展為一個  自動更新父組件屬性的 v-on 監聽器。

例如

<child :foo.sync=”msg”></child> 就會被擴展為: <child :foo=”bar” @update:foo=”val => bar = val”>  (@是v-on的簡寫)

 當子組件需要更新 foo 的值的時候,他需要顯示的觸發一個更新事件:   this.$emit( “update:foo”, newValue );

初始狀態:

 

 點擊之后的狀態:

 

 

原理就是父組件向子組件傳遞了一個函數:function (newValue) { this.msg = newValue; }

當使用一個對象一次性設置多個屬性的時候,這個 .sync 修飾符也可以和 v-bind 一起使用。

例如:  <child  v-bind.sync = “{ message: msg, uC: uc}”></child>     (不能寫成  :.sync="{*********}",否則會報錯的)

這個例子會為 message 和 uC 同時添加用于更新的 v-on 監聽器。

 

總結

以上所述是小編給大家介紹的vue 之 .sync 修飾符示例詳解,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復大家的!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 衡水市| 永宁县| 岗巴县| 呈贡县| 镇沅| 磐石市| 蓬莱市| 安多县| 布尔津县| 闽侯县| 高安市| 龙州县| 石门县| 漠河县| 延长县| 南昌市| 深州市| 洪湖市| 卢龙县| 平原县| 宜宾县| 吉木萨尔县| 城市| 原阳县| 名山县| 丰台区| 北票市| 博湖县| 铜川市| 德阳市| 南靖县| 铜山县| 甘孜| 惠来县| 静乐县| 县级市| 兴业县| 泸州市| 商水县| 锦屏县| 布拖县|