Vue provide / inject可監聽的對象


提示provideinject 綁定並不是可響應的。這是刻意為之的。然而,如果你傳入了一個可監聽的對象,那么其對象的 property 還是可響應的。

可監聽的響應對象: Array, Object

父級組件

provide() {
  const { obj, arr, fun } = this
  return {
    obj, arr, fun,
    newfun: param => 'newfun' + obj.foo + param // fun 的另一種方式。其中帶有 arr 或 obj 的值,可同步更新
  }
},
data() {
  obj: {
    foo: 'foo',
    bar : 'bar'
  },
  arr: ['foo', 'bar'],
  fun: param => 'fun' + param
}

子孫組件

// 可響應對象
onject: ['obj', 'arr'],
created() {
  // 響應更新
  this.obj.foo = 'new foo' // 輸出: new foo
  this.arr[1] = 'new bar' // 輸出: new bar
}
// 通過函數調用方式使用
onject: ['fun'],
created() {
  // 響應更新
  console.log(this.fun()) // 輸出: fun
}

fun模式可通過初始賦值修改影響當前值,或者通過父級組件修改影響所有值(子級修改當前域,父級修改所有域)

arr``obj修改影響所有域(不管子級修改還是父級修改都一樣)

20201120

可響應對象不可一次性修改全部


免責聲明!

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



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