vue中的依賴注入provide和inject簡(jiǎn)單介紹
vue中的依賴注入 provide 和 inject
vue中的依賴注入 provide 和 inject

provide 選項(xiàng)允許我們指定我們想要提供給后代組件的數(shù)據(jù)/方法。
下面是一個(gè)組價(jià)刷新的案列
<template>
<div >
<div class="view">
<router-view v-if="isRouterAlive"></router-view>
</div>
</div>
</template>
<script>
export default {
data() {
return {
isRouterAlive: true
}
},
provide() {
return {
reload: this.reload
}
},
methods: {
reload() {
this.isRouterAlive = false
this.$nextTick(function() {
this.isRouterAlive = true
})
}
}
}然后在任何后代組件里,我們都可以使用 inject 選項(xiàng)來接收指定的我們想要添加在這個(gè)實(shí)例上的屬性:
inject: ['reload']
注:依賴注入所提供的屬性是非響應(yīng)式
vue中的依賴注入provide和inject場(chǎng)景解析(簡(jiǎn)單易懂)
本文開始,首先我們來看這兩個(gè)詞的意思,provide:提供 inject:注入
用處:
父組件可以向其所有子組件傳入數(shù)據(jù),而“不管子組件層次結(jié)構(gòu)有多深(非父子和父子咱都能傳)”
特性:
父組件有一個(gè)provide選項(xiàng)來提供數(shù)據(jù)
子組件有一個(gè)inject選項(xiàng)來開始使用這個(gè)數(shù)據(jù)
本文參考組件層級(jí):
Index組件
\ A組件
\ B組件
代碼區(qū):
場(chǎng)景1:我想要Index組件直接給b組件傳值
Index組件代碼:
<template>
<div>
<div>我是index組件</div>
<A></A>
</div>
</template>
<script>
import A from '@/components/A.vue'
export default {
components: {
A
},
data() {
return {}
},
provide: {
text: '我是父組件的provide信息666'
}
}
</script>
<style></style>接收的B組件代碼:
<template>
<div>
<div>我是B組件</div>
<div>{{ msg }}</div>
</div>
</template>
<script>
export default {
name: 'B',
data() {
return {
msg: this.text
}
},
inject: ['text']
}
</script>
<style></style>當(dāng)然,provide還有第二種寫法,寫成函數(shù)的形式
Index組件代碼:
<template>
<div>
<div>我是index組件</div>
<A></A>
</div>
</template>
<script>
import A from '@/components/A.vue'
export default {
components: {
A
},
data() {
return {
arr: ['1', '2', '3']
}
},
// provide: {
// text: '我是父組件的provide信息666'
// }
provide() {
return {
arr: this.arr
}
}
}
</script>
<style></style>
B組件代碼:
<template>
<div>
<div>我是B組件</div>
<div>{{ msg }}</div>
<ul v-for="(item, index) in arr" :key="index">
<li>{{ item }}</li>
</ul>
</div>
</template>
<script>
export default {
name: 'B',
data() {
return {
msg: this.text
}
},
inject: ['arr']
}
</script>
<style></style>
運(yùn)行截圖:

對(duì)比:
如果使用常見的props方式傳值需要:index->a->b
如果使用provide/inject方式傳值:index->a index->b
本文如有錯(cuò)誤,還望各位批評(píng)指針,希望能幫助到大家更好的理解vue的provide和inject
到此這篇關(guān)于vue中的依賴注入provide和inject簡(jiǎn)單介紹的文章就介紹到這了,更多相關(guān)vue依賴注入provide和inject內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
el-table表格動(dòng)態(tài)合并相同數(shù)據(jù)單元格(可指定列+自定義合并)
工作時(shí)遇到的el-table合并單元格的需求,本文主要介紹了el-table表格動(dòng)態(tài)合并相同數(shù)據(jù)單元格(可指定列+自定義合并),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07
Vue表單預(yù)校驗(yàn) validate方法不生效問題
這篇文章主要介紹了Vue表單預(yù)校驗(yàn) validate方法不生效問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-04-04
vue2中基于vue-simple-upload實(shí)現(xiàn)文件分片上傳組件功能
這篇文章主要介紹了vue2中基于vue-simple-upload的文件分片上傳組件,本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06
vue3中emit('update:modelValue')使用簡(jiǎn)單示例
這篇文章主要給大家介紹了關(guān)于vue3中emit('update:modelValue')使用的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-09-09
vue如何將html內(nèi)容轉(zhuǎn)為圖片并下載到本地
這篇文章主要介紹了vue如何將html內(nèi)容轉(zhuǎn)為圖片并下載到本地,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01
ant-design-vue中的table自定義格式渲染解析
這篇文章主要介紹了ant-design-vue中的table自定義格式渲染,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-10-10

