中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

vue高級組件之provide與inject怎么使用

發布時間:2023-04-27 11:04:07 來源:億速云 閱讀:117 作者:iii 欄目:開發技術

本文小編為大家詳細介紹“vue高級組件之provide與inject怎么使用”,內容詳細,步驟清晰,細節處理妥當,希望這篇“vue高級組件之provide與inject怎么使用”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

    vue provide與inject使用及說明

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

    • 1.父子組件,通過prop

    • 2.非父子組件,通過vuex或根vue轉載器

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

    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會導致代碼性價比比較低,項目本身沒有使用vuex的必要

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

    • 1.provide就相當于加強版父組件prop

    • 2.inject就相當于加強版子組件的props 

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

    1.父級組件如下

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

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

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

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

    缺點

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

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

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

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

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

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

    具體操作

    • provide('變量名','變量')

    • inject('變量名')

    • provide('事件名','事件')

    • inject('事件名','事件')

    讀到這里,這篇“vue高級組件之provide與inject怎么使用”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    大连市| 洪泽县| 黑龙江省| 连平县| 蒙自县| 靖安县| 河西区| 松原市| 五寨县| 青田县| 红原县| 丰城市| 湖州市| 海林市| 盘锦市| 张北县| 绍兴县| 临沧市| 濮阳县| 桐柏县| 高青县| 阳高县| 枣阳市| 芦溪县| 荥经县| 通州市| 肇州县| 牟定县| 札达县| 合川市| 开平市| 德化县| 乌兰县| 大邑县| 巴彦县| 化隆| 新邵县| 界首市| 开远市| 建阳市| 习水县|