vue2實現組件的雙向綁定(組件props的雙向綁定)


組件的prop雙向綁定於vue2廢除,vue2的prop只限於父->子的單向流動,不能修改外層傳來的數據,如果需要得自己來實現。

實現方法步驟: 

  1.在組件內得data對象中創建一個props屬性的副本

 data: function () {
 return {
 myResult: this.result(props中得值)//data中新增字段
 };

  2.創建針對props屬性得watch來同步組件外對props的修改,加入外部修改props,不會同步到副本。

 watch: {
 result(val) {//props的值
 this.myResult = val;//新增result的watch,監聽變更並同步到myResult上
 }

  3.創建針對props副本的watch,通知到組件外。此時在組件內修改props的副本,組件外並不知道,所以還需要監聽副本——>通知外層

 watch: {
 result(val) {
 this.myResult = val;//②監聽外部對props屬性result的變更,並同步到組件內的data屬性myResult中
 },
 myResult(val){
 //xxcanghai 小小滄海 博客園
 this.$emit("on-result-change",val);//③組件內對myResult變更后向外部發送事件通知
 }
 },

什么樣的props適合做雙向綁定?

首先要聲明的是雙向綁定的props肯定是不利於組件間的數據狀態管理,尤其是在復雜的業務中更是如此,所以要盡可能的少用雙向綁定,過於復雜的數據處理建議使用Vuex (http://vuex.vuejs.org/zh-cn/intro.html

但是在我們平時使用過程中又確實有props雙向綁定的需求,個人認為只有在滿足以下條件時再使用雙向綁定的props。

  • 組件內部需要修改props。
  • 組件需要可以由外部在運行時動態控制,而非單純初始化。
  • 組件外部需要讀取組件內的狀態來進行處理

有組件可以簡化此過程,資料來自https://www.jb51.net/article/98881.htm


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM