vue中的provide/inject的學習使用
前言
最近在看element-ui的源碼,發(fā)現(xiàn)了一個這樣的屬性:inject.遂查看官網(wǎng)provider/inject
provider/inject:簡單的來說就是在父組件中通過provider來提供變量,然后在子組件中通過inject來注入變量。
需要注意的是這里不論子組件有多深,只要調(diào)用了inject那么就可以注入provider中的數(shù)據(jù)。而不是局限于只能從當前父組件的prop屬性來獲取數(shù)據(jù)。
下面我們來驗證下猜想:
first:定義一個parent component
<template> <div> <childOne></childOne> </div> </template> <script> import childOne from '../components/test/ChildOne' export default { name: "Parent", provide: { for: "demo" }, components:{ childOne } }
在這里我們在父組件中provide for這個變量。
second 定義一個子組件
<template> <div> {{demo}} <childtwo></childtwo> </div> </template> <script> import childtwo from './ChildTwo' export default { name: "childOne", inject: ['for'], data() { return { demo: this.for } }, components: { childtwo } } </script>
third 定義另一個子組件
<template> <div> {{demo}} </div> </template> <script> export default { name: "", inject: ['for'], data() { return { demo: this.for } } } </script>
在2個子組件中我們使用jnject注入了provide提供的變量for,并將它提供給了data屬性。
這里官網(wǎng)注明例子只工作在 Vue 2.2.1 或更高版本。低于這個版本時,注入的值會在 props 和 data 初始化之后得到。
運行之后看下結(jié)果
從上面這個例子可以看出,只要在父組件中調(diào)用了,那么在這個父組件生效的生命周期內(nèi),所有的子組件都可以調(diào)用inject來注入父組件中的值。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Vue如何實現(xiàn)數(shù)據(jù)的上移和下移
這篇文章主要介紹了Vue如何實現(xiàn)數(shù)據(jù)的上移和下移問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-06-06nginx+vue.js實現(xiàn)前后端分離的示例代碼
這篇文章主要介紹了nginx+vue.js實現(xiàn)前后端分離的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-02-02vue中watch監(jiān)聽路由傳來的參數(shù)變化問題
這篇文章主要介紹了vue中watch監(jiān)聽路由傳來的參數(shù)變化,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-07-07Vue3+Vue Router實現(xiàn)動態(tài)路由導航的示例代碼
隨著單頁面應(yīng)用程序(SPA)的日益流行,前端開發(fā)逐漸向復雜且交互性強的方向發(fā)展,在這個過程中,Vue.js及其生態(tài)圈的工具(如Vue Router)為我們提供了強大的支持,本文將介紹如何在Vue 3中使用Vue Router實現(xiàn)動態(tài)路由導航,需要的朋友可以參考下2024-08-08Vue+ECharts+高德地圖API實現(xiàn)天氣預(yù)報數(shù)據(jù)可視化的教程
所謂數(shù)據(jù)可視化,我們可以理解為從宏觀角度來看一眼就能看出來整個數(shù)據(jù)的占比,走向,對于數(shù)據(jù)可視化,很多互聯(lián)網(wǎng)公司是很看重這一塊的,包括大廠,本就將給大家介紹如何通過Vue+ECharts+高德地圖API實現(xiàn)天氣預(yù)報數(shù)據(jù)可視化2023-06-06