vue中的inject學(xué)習(xí)教程
最近看源碼有一段對(duì)于整合參數(shù)的代碼,
normalizeProps(child, vm) normalizeInject(child, vm) normalizeDirectives(child)
想象里邊的Inject很少用到,所以查了一下資料,
通常組件傳參是有兩種情況
- 父子組件進(jìn)行傳參,這時(shí)候通常利用props
- 非父子組件傳參,這時(shí)候一般利用vuex
會(huì)有一種情況隔代組件傳參,這時(shí)候可以利用props一層一層傳遞下去,但是代碼就比較亂了
所以就有了 provide/inject 進(jìn)行隔代組件傳遞
父組件
<template>
<div class="test">
<son></son>
</div>
</template>
<script>
export default {
name: 'Test',
provide: {
name: 'Garrett'
}
}
</script>
子組件
<template>
<div>
{{name}}
</div>
</template>
<script>
export default {
name: 'Garrettson',
inject: [name]
}
</script>
對(duì)于使用場(chǎng)景,基礎(chǔ)組件應(yīng)該使用props,我個(gè)人覺得一般用于比較復(fù)雜業(yè)務(wù),提供基礎(chǔ)數(shù)據(jù),比如最近的基金詳情頁??梢灾苯釉谧铐攲犹峁┗鸬幕拘畔ⅲ缓笞咏M件都可以訪問的到,不用每個(gè)單獨(dú)提供detail的props 屬性。
PS:vue學(xué)習(xí)- provide / inject
1、解釋
provide / inject這對(duì)選項(xiàng)需要一起使用,以允許一個(gè)祖先組件向其所有子孫后代注入一個(gè)依賴,不論組件層次有多深,并在起上下游關(guān)系成立的時(shí)間里始終生效。
provide 選項(xiàng)應(yīng)該是:一個(gè)對(duì)象或返回一個(gè)對(duì)象的函數(shù)
inject 選項(xiàng)應(yīng)該是:一個(gè)字符串?dāng)?shù)組,或 一個(gè)對(duì)象,對(duì)象的 key 是本地的綁定名
2、示例
父組件中提供
provide() {
return {
map_nodeObj: { map_node: this.obj }
// 提示:provide 和 inject 綁定并不是可響應(yīng)的。這是刻意為之的。然而,如果你傳入了一個(gè)可監(jiān)聽的對(duì)象,那么其對(duì)象的屬性還是可響應(yīng)的。
}
},
子組件中引入
inject: {
map_nodeObj: {
default: () => {
return {map_node: '0'}
}
}
},
使用: this.map_nodeObj.map_node
3、運(yùn)行順序
data provide created // 在這個(gè)階段$el還未生成,在這先處理privide的邏輯,子孫組件才可以取到inject的值 mounted ...
總結(jié)
以上所述是小編給大家介紹的vue中的inject學(xué)習(xí)教程,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
相關(guān)文章
vue中typescript裝飾器的使用方法超實(shí)用教程
這篇文章主要介紹了vue中使用typescript裝飾器的使用方法超實(shí)用教程,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-06-06
vue中watch和computed的區(qū)別與使用方法
這篇文章主要給大家介紹了關(guān)于vue中watch和computed的區(qū)別與使用方法的相關(guān)資料,文中通過實(shí)例代碼結(jié)束的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Vue具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08
vue組件開發(fā)props驗(yàn)證的實(shí)現(xiàn)
這篇文章主要介紹了vue組件開發(fā)props驗(yàn)證的實(shí)現(xiàn),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-02-02
Vue3組件中g(shù)etCurrentInstance()獲取App實(shí)例,但是返回null的解決方案
這篇文章主要介紹了Vue3組件中g(shù)etCurrentInstance()獲取App實(shí)例,但是返回null的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-04-04
Vue3頁面數(shù)據(jù)加載延遲的問題分析和解決方法
在?Vue?3?的項(xiàng)目中,當(dāng)我們使用響應(yīng)式數(shù)據(jù)(如?ref?或?computed)來管理頁面狀態(tài)時(shí),可能會(huì)遇到由于接口數(shù)據(jù)加載延遲,導(dǎo)致頁面初始渲染時(shí)數(shù)據(jù)尚未獲取完成的問題,本文針對(duì)此問題簡(jiǎn)單分析了原因和解決方法,需要的朋友可以參考下2024-11-11

