Vue中provide和inject的使用教程詳解
示例背景
本教程是介紹如何在vue中使用provide和inject。在 Vue 中,provide 和 inject 是用于實(shí)現(xiàn)祖先組件向后代組件傳遞數(shù)據(jù)的一種方式。 在這個(gè)示例中,祖組件通過 provide 提供了 message 變量 和message2 變量 ,子組件通過 inject 注入了 message 變量,孫組件通過 inject 注入了 message2 變量。這樣,子組件和孫就可以訪問到父組件提供的數(shù)據(jù)。
示例效果圖

示例源代碼
父組件代碼
<template>
<div class="djs-box">
<div class="topBox">
<h3>vue中provide/inject怎么使用(圖文示例)</h3>
<div>大劍師蘭特, 還是大劍師蘭特,gis-dajianshi</div>
</div>
<div class="dajianshi">
<ComA></ComA>
</div>
</div>
</template>
<script>
import ComA from '../components/provideInject/demo-A.vue';
export default {
components:{
ComA
},
provide() {
return {
message: 'Hello from ROOT-message',
message2: 'Hello from ROOT-message2'
};
}
}
</script>
<style scoped>
.djs-box {
width: 1000px;
height: 650px;
margin: 50px auto;
border: 1px solid teal;
}
.topBox {
margin: 0 auto 0px;
padding: 10px 0 20px;
background: teal;
color: #fff;
}
.dajianshi {
width: 98%;
height: 480px;
margin: 5px auto 0;
display: flex;
justify-content: space-between;
border:1px solid #369;
}
</style>子組件代碼
<template>
<div style="margin-top: 100px;">
<div class="left">
<h2>兒子組件從跟組件獲取的信息message:</h2>
<div style="color: blue;">{{message}}</div>
</div>
<div class="right">
<h2>孫子組件從跟組件獲取的內(nèi)容message2:</h2>
<ChildA></ChildA>
</div>
</div>
</template>
<script>
import ChildA from '@/components/provideInject/demo-A-A.vue';
export default {
inject: ['message'],
components:{
ChildA
},
}
</script>
<style scoped>
.left{ width: 48%; float:left;}
.right{ width: 48%; float:right; height:300px; border:1px solid #ddd;}
</style>
孫組件代碼
<template>
<div>
<div style="color: red;">{{ message2 }}</div>
</div>
</template>
<script>
export default {
inject: ['message2'],
}
</script>基本使用步驟
Vue中的provide和inject是用于實(shí)現(xiàn)依賴注入的API,其基本使用步驟如下:
在父組件中使用provide:在父組件(祖先組件)的provide選項(xiàng)中,指定想要提供給后代組件的數(shù)據(jù)或方法。這些數(shù)據(jù)或方法可以是任意類型,包括函數(shù)、對象、原始值等。
在子組件中使用inject:在任何后代組件中,通過inject選項(xiàng)來接收父組件提供的數(shù)據(jù)或方法。inject可以是一個(gè)字符串?dāng)?shù)組,也可以是一個(gè)對象。如果是對象,可以指定鍵名與默認(rèn)值。
傳遞非響應(yīng)式數(shù)據(jù):需要注意的是,通過provide/inject傳遞的數(shù)據(jù)不會(huì)自動(dòng)變成響應(yīng)式的。如果需要在子組件中監(jiān)聽這些數(shù)據(jù)的變化,可能需要結(jié)合Vue的響應(yīng)式系統(tǒng)進(jìn)行處理。
解決逐級(jí)傳遞問題:provide/inject特別適用于解決跨多個(gè)層級(jí)的組件間數(shù)據(jù)傳遞問題,避免了通過props逐級(jí)傳遞的繁瑣過程。
到此這篇關(guān)于Vue中provide和inject的使用教程詳解的文章就介紹到這了,更多相關(guān)Vue provide inject內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue項(xiàng)目webpack中Npm傳遞參數(shù)配置不同域名接口
這篇文章主要介紹了vue項(xiàng)目webpack中Npm傳遞參數(shù)配置不同域名接口,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-06-06
詳解Vue用axios發(fā)送post請求自動(dòng)set cookie
本篇文章主要介紹了Vue用axios發(fā)送post請求自動(dòng)set cookie,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-05-05
vue項(xiàng)目實(shí)戰(zhàn)總結(jié)篇
離放假還有1天,今天小編抽空給大家分享前端時(shí)間小編做的vue項(xiàng)目,非常完整,需要的朋友參考下2018-02-02
3分鐘迅速學(xué)會(huì)Vue中methods方法使用技巧
最近在學(xué)習(xí)Vue,感覺methods還是有必有總結(jié)一下的,下面這篇文章主要給大家介紹了關(guān)于3分鐘迅速學(xué)會(huì)Vue中methods方法使用技巧的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-02-02
vue中js判斷長時(shí)間不操作界面自動(dòng)退出登錄(推薦)
這篇文章主要介紹了vue中js判斷長時(shí)間不操作界面自動(dòng)退出登錄,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-01-01

