Vue中的provide和inject 依賴注入

2021-10-09 17:02:58 字數 1451 閱讀 5365

一、名詞解析:

provide:object | () => object`

`inject:array|

provide:提供依賴``是乙個物件,或者是乙個返回物件的函式。裡面呢就包含要給子孫後代的東西,也就是屬性和屬性值。

inject:注入依賴乙個字串陣列,或者是乙個物件。屬性值可以是乙個物件,包含from和default預設值。

說明:

provide 和 inject 主要在開發高階外掛程式/元件庫時使用。並不推薦用於普通應用程式**中。

這對選項是成對使用的。子孫元件想要獲取祖先元件得資源,那麼怎麼辦呢,總不能一直取父級往上吧,而且這樣**結構容易混亂。這個就是這對選項要幹的事情。

const child =}}

12345678

from表示在可用的注入內容中搜尋用的 key,default當然就是預設值。

// 父級元件提供 'foo'

var provider =

,// ...

}// 子元件注入 'foo'

var child =

// ...

}123456789101112131415161718

父元件

專案最外層的布局元件layout.vue

<

!-- 主內容 --

>

<

/router-view>

<

/div>

<

/template>

export

default},

data()

},}<

/script>

123456789101112131415161718192021222324

這裡就是我們說的provide,向下提供資訊,這裡提供的是當前的vue例項,相當於給了後代乙個介面。這樣在任何的後代元件中,都可以使用inject選項來接收指定的我們想要新增在這個例項上的屬性。

子元件layout.vue元件內的router-view 可能路由進來很多其它子孫元件,比如order.vue

export

default

}123456789101112

這樣也就可以訪問了,當做當前vue例項的屬性。這樣做的好處,相當於給了乙個捷徑,不用使用$parent一級一級的訪問。

我們可以把依賴注入看做一部分「大範圍有效的prop」,除了

祖先元件不需要知道哪些後代元件需要使用它提供的屬性

後代元件不需要知道被注入的屬性來自**

Vue中provide和inject 用法

1.概念 成對出現 provide和inject是成對出現的 作用 用於父元件向子孫元件傳遞資料 使用方法 provide在父元件中返回要傳給下級的資料,inject在需要使用這個資料的子輩元件或者孫輩等下級元件中注入資料。使用場景 由於vue有 parent屬性可以讓子元件訪問父元件。但孫元件想要...

vue的provide和inject特性

元件之間的通訊可以通過props和 emit的方式進行通訊,但是如果元件之間的關係非常複雜的話,通過以上的方式會很麻煩,並且程式會非常脆弱,沒有建中性可言。在vue2.2.0 中新增provide和inject屬性,可以方便的幫助我們進行元件間的傳值。使用的方式很簡單 父元件通過provide提供資...

Vue依賴注入 provide 和 inject

允許乙個祖先元件向其所有子孫後代注入乙個依賴,不論元件層次有多深,並在起上下游關係成立的時間裡始終生效 provide選項允許我們指定我們想要提供給後代元件的資料 方法 provide選項應該是乙個物件或返回乙個物件的函式 provide function 或者 provide 然後在任何後代元件裡...