欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue高級組件之provide與inject使用及說明

 更新時間:2023年04月22日 09:12:55   作者:Garrettzxd  
這篇文章主要介紹了vue高級組件之provide與inject使用及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

vue provide與inject使用及說明

vue中不同組件通信方式如下

  • 1.父子組件,通過prop
  • 2.非父子組件,通過vuex或根vue轉(zhuǎn)載器

 通常是以上兩種情況,然而還有一種比較特殊的情況,即孫子組件或更深層次的組件通信

1.下面是a.vue

<template>
?? ?<div class="test">
?? ??? ?<son prop="data"></son>
?? ?</div>
</template>

2.下面是son.vue

<template>
?? ?<div>
?? ??? ?<grandson prop="data"></grandson>
?? ?</div>
</template>
?
<script>
export default {
?? ?name: 'Son',
?? ?props: ['data'],
}
</script>

很容易看出,如果父組件需要與grandson通信,除了vuex,必須先與son組件通信,再由son與grandson通信,在層級比較少的情況下也無可厚非,但是層級一旦多起來是很可怕的

有人會問為什么不用vuex,簡單省事,有很多為了這個引入vuex會導(dǎo)致代碼性價比比較低,項目本身沒有使用vuex的必要

那么這種情況下provide / inject就登場了

  • 1.provide就相當(dāng)于加強版父組件prop
  • 2.inject就相當(dāng)于加強版子組件的props 

因為以上兩者可以在父組件與子組件、孫子組件、曾孫子...組件數(shù)據(jù)交互,也就是說不僅限于prop的父子組件數(shù)據(jù)交互,只要在上一層級的聲明的provide,那么下一層級無論多深都能夠通過inject來訪問到provide的數(shù)據(jù)

1.父級組件如下

<template>
?? ?<div class="test">
?? ??? ?<son prop="data"></son>
?? ?</div>
</template>
?
<script>
export default {
?? ?name: 'Test',
?? ?provide: {
?? ??? ?name: 'Garrett'
?? ?}
}

2.孫子組件,注意這里是孫子組件,父級 -> 子組件 -> 孫子組件三個層級關(guān)系

<template>
?? ?<div>
?? ??? ?{{name}}
?? ?</div>
</template>
?
<script>
export default {
?? ?name: 'Grandson',
?? ?inject: [name]
}
</script>

這里可以通過inject直接訪問其兩個層級上的數(shù)據(jù),其用法與props完全相同,同樣可以參數(shù)校驗等

缺點

這么做也是有明顯的缺點的,在任意層級都能訪問導(dǎo)致數(shù)據(jù)追蹤比較困難,不知道是哪一個層級聲明了這個或者不知道哪一層級或若干個層級使用了,因此這個屬性通常并不建議使用能用vuex的使用vuex,不能用的多傳參幾層,但是在做組件庫開發(fā)時,不對vuex進(jìn)行依賴,且不知道用戶使用環(huán)境的情況下可以很好的使用

vue3中父子組件傳值(provide/inject)

在vue3中的父子組件一般都用provide 和 inject 傳值

父組件中引入和注冊了子組件之后

在script標(biāo)簽下引入provide就可以將父組件中的變量或方法傳遞出去

在子組件中就可以用inject來接收一下 不管子組件的層級有多深都可以接收到

具體操作

  • provide('變量名','變量')
  • inject('變量名')
  • provide('事件名','事件')
  • inject('事件名','事件')

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 深入了解Vue Pinia持久化存儲二次封裝

    深入了解Vue Pinia持久化存儲二次封裝

    Pinia 是2019年由vue.js官方成員重新設(shè)計的新一代狀態(tài)管理庫,類似Vuex,下面我們就來學(xué)習(xí)一下如何通過Pinia實現(xiàn)持久化存儲的相關(guān)知識,感興趣的小伙伴可以了解下
    2023-12-12
  • Vue中使用require.context自動引入組件的操作方法

    Vue中使用require.context自動引入組件的操作方法

    require.context?是?webpack?提供的一個API,用于創(chuàng)建context,即一組具有相同上下文的模塊,使用?require.context?可以方便地加載多個模塊,并且可以靈活地控制模塊的加載順序和依賴關(guān)系,本文給大家講解Vue中使用require.context自動引入組件的方法,感興趣的朋友一起看看吧
    2024-01-01
  • Vue.js快速入門教程

    Vue.js快速入門教程

    Vue.js是一個專注于視圖模型(ViewModal)的框架。接下來給大家?guī)砹藇ue.js快速入門教程,非常不錯,具有參考借鑒價值,一起看看吧
    2016-09-09
  • 詳解vue-cli項目中的proxyTable跨域問題小結(jié)

    詳解vue-cli項目中的proxyTable跨域問題小結(jié)

    這篇文章主要介紹了詳解vue-cli項目中的proxyTable跨域問題小結(jié),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02
  • vue中的計算屬性傳參

    vue中的計算屬性傳參

    這篇文章主要介紹了vue中的計算屬性傳參,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • Vue打包程序部署到Nginx 點擊跳轉(zhuǎn)404問題

    Vue打包程序部署到Nginx 點擊跳轉(zhuǎn)404問題

    這篇文章主要介紹了Vue打包程序部署到Nginx 點擊跳轉(zhuǎn)404問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • Vue 事件處理操作實例詳解

    Vue 事件處理操作實例詳解

    這篇文章主要介紹了Vue 事件處理操作,結(jié)合實例形式較為詳細(xì)的分析了vue.js事件處理相關(guān)的事件監(jiān)聽、處理、修飾符等相關(guān)概念、用法及操作注意事項,需要的朋友可以參考下
    2019-03-03
  • vue基礎(chǔ)之data存儲數(shù)據(jù)及v-for循環(huán)用法示例

    vue基礎(chǔ)之data存儲數(shù)據(jù)及v-for循環(huán)用法示例

    這篇文章主要介紹了vue基礎(chǔ)之data存儲數(shù)據(jù)及v-for循環(huán)用法,結(jié)合實例形式分析了vue.js使用data存儲數(shù)據(jù)、讀取數(shù)據(jù)及v-for遍歷數(shù)據(jù)相關(guān)操作技巧,需要的朋友可以參考下
    2019-03-03
  • Vue中的高德軌跡回放

    Vue中的高德軌跡回放

    這篇文章主要介紹了Vue中的高德軌跡回放問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • vue vant Area組件使用詳解

    vue vant Area組件使用詳解

    這篇文章主要介紹了vue vant Area組件使用詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12

最新評論