1. 程式人生 > 其它 >Vue 計算屬性 和 多元件混入使用經驗總結

Vue 計算屬性 和 多元件混入使用經驗總結

場景:想讓一個物件在兩個元件A和B中混入,使用共同的方法,然後A元件中改變混入物件的值,B元件的值得到相應的改變,以最少的程式碼實現物件複用。

問題:物件都能夠成功混入到兩個元件中,但是A元件改變混入物件的值,B元件中混入物件的值不變。

原因分析:混入到兩個元件中的物件是被複制的,不是單例的,即兩個元件都拷貝了一份混入物件的副本,兩個物件之間的資料域是分開的,改變其中一個,另外一個不受影響。

解決方式:在第二個元件中加監聽事件,用於更新混入物件的值,這樣兩個元件中的被混入物件的值都更新了,此時可以使用公共的計算屬性,兩個元件中的值都會變化。

程式碼:

被混入的物件

export const
data = { name: 'data', data() { return { data:{ value1:1, value2:2, } } } }

元件B中寫監聽事件

//元件通訊
created(){
  //全域性監聽事件(地圖上畫線)
  Bus.$on("data", (data) => {
    this.data= data;
  });
},

元件A中的資料改變後,呼叫元件B的監聽事件來改變元件B中混入物件的值。

Bus.$emit("data",this.data);