vue中的inject學習教程
最近看源碼有一段對于整合參數的代碼,
normalizeProps(child, vm) normalizeInject(child, vm) normalizeDirectives(child)
想象里邊的Inject很少用到,所以查了一下資料,
通常組件傳參是有兩種情況
- 父子組件進行傳參,這時候通常利用props
- 非父子組件傳參,這時候一般利用vuex
會有一種情況隔代組件傳參,這時候可以利用props一層一層傳遞下去,但是代碼就比較亂了
所以就有了 provide/inject
進行隔代組件傳遞
父組件
<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>
對于使用場景,基礎組件應該使用props,我個人覺得一般用于比較復雜業(yè)務,提供基礎數據,比如最近的基金詳情頁。可以直接在最頂層提供基金的基本信息,然后子組件都可以訪問的到,不用每個單獨提供detail的props 屬性。
PS:vue學習- provide / inject
1、解釋
provide / inject這對選項需要一起使用,以允許一個祖先組件向其所有子孫后代注入一個依賴,不論組件層次有多深,并在起上下游關系成立的時間里始終生效。
provide 選項應該是:一個對象或返回一個對象的函數
inject 選項應該是:一個字符串數組,或 一個對象,對象的 key 是本地的綁定名
2、示例
父組件中提供
provide() { return { map_nodeObj: { map_node: this.obj } // 提示:provide 和 inject 綁定并不是可響應的。這是刻意為之的。然而,如果你傳入了一個可監(jiān)聽的對象,那么其對象的屬性還是可響應的。 } },
子組件中引入
inject: { map_nodeObj: { default: () => { return {map_node: '0'} } } },
使用: this.map_nodeObj.map_node
3、運行順序
data provide created // 在這個階段$el還未生成,在這先處理privide的邏輯,子孫組件才可以取到inject的值 mounted ...
總結
以上所述是小編給大家介紹的vue中的inject學習教程,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!
相關文章
vue cli 3.0下配置開發(fā)環(huán)境下的sourcemap問題
這篇文章主要介紹了vue cli 3.0下配置開發(fā)環(huán)境下的sourcemap問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-06-06讓 babel webpack vue 配置文件支持智能提示的方法
這篇文章主要介紹了讓 babel webpack vue 配置文件支持智能提示的相關知識,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2019-06-06Vue.set()動態(tài)的新增與修改數據,觸發(fā)視圖更新的方法
今天小編就為大家分享一篇Vue.set()動態(tài)的新增與修改數據,觸發(fā)視圖更新的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-09-09一次在vue中使用post進行excel表下載的實戰(zhàn)記錄
最近遇到了需求,覺著有必要給大家總結下,這篇文章主要給大家介紹了關于一次在vue中使用post進行excel表下載的實戰(zhàn)記錄,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2022-07-07