vue中的provide / inject使用

理論

這是Vue提供的一組允許祖先組件向其所有子孫后代注入一個依賴的選項,不管組件層次有多深,子孫后端使用inject都能使用到祖先組件provide提供的對象或?qū)ο蟮暮瘮?shù),官方是如下定義的:

這對選項需要一起使用,以允許一個祖先組件向其所有子孫后代注入一個依賴,不論組件層次有多深,并在起上下游關系成立的時間里始終生效。

provide 選項應該是一個對象或返回一個對象的函數(shù)。該對象包含可注入其子孫的屬性。在該對象中你可以使用 ES2015 Symbols 作為 key,但是只在原生支持 Symbol 和 Reflect.ownKeys 的環(huán)境下可工作。
inject 選項應該是:

  • 一個字符串數(shù)組,或
  • 一個對象,對象的 key 是本地的綁定名,value 是:
  • 在可用的注入內(nèi)容中搜索用的 key (字符串或 Symbol),或
  • 一個對象,該對象的:
  1. from 屬性是在可用的注入內(nèi)容中搜索用的 key (字符串或 -- Symbol)
  2. default 屬性是降級情況下使用的 value

那么重點來了,在項目中我們?nèi)绾问褂眠@一對選項呢?

實踐:

祖先組件:

<template>
    <div>
        我是祖先
    </div>
</template>

<script>
export default {
  name: 'my-parent',
  provide() {
    return {
      getParent: this.parent    // 為子孫后代提供parent
    };
  },
  data() {
    return {
      parent: {
        name: '我是你祖宗'
      }
    };
  }
}
</script>

子孫后代組件:

<template>
    <my-parent>
        我是子孫輩,
        我祖宗的名字:{{ getParent.name  }}
    </my-parent>
</template>

<script>
export default {
  inject: ['getParent'],  // 獲取祖先提供的getParent對象
  data() {
    return {};
  }
}
</script>
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容