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

VUE中如何優(yōu)雅實現(xiàn)爺孫組件的數(shù)據(jù)通信

 更新時間:2022年04月18日 10:46:44   作者:今天寫注釋了嗎  
所謂祖孫組件,也就是3層嵌套的組件,下面這篇文章主要給大家介紹了關(guān)于VUE中如何優(yōu)雅實現(xiàn)爺孫組件的數(shù)據(jù)通信的相關(guān)資料,需要的朋友可以參考下
  • 在開發(fā)的過程中遇到這么個場景,我需要在爺組件中請求數(shù)據(jù),請求到的數(shù)據(jù)呢需要在孫組件中使用。

  • 爺孫組件是這樣的:我有一個根組件index.vue,根組件中有一個父親組件<Father/>,在父親組件中又有一個子組件,我們叫他孫組件<Son/>

  • 看到這個場景,vuex、eventBus是有些大材小用了,然后我就用了props,將數(shù)據(jù)傳遞給<Father/>,又將這個值通過props傳給<Son/>。但是這么傳遞似乎又感覺有些low了,那有沒有更好的辦法呢?確實有!那就是$attrs和$listeners。

$attrs和$listeners如何使用呢?

  • $attrs是用來將數(shù)據(jù)從爺組件傳遞給孫組件的。
  • $listeners是用來從孫組件中觸發(fā)爺組件中事件的。

$attrs的使用:

  • 在爺組件(index.vue)中,類似props傳值,將需要傳遞的值綁定在父組件上。
  • 在父組件中,也是類似props傳值,但是這里傳遞的就不是值了,而是$attrs。
  • 在孫組件中,接收props,這樣就可以在孫組件中使用這個數(shù)據(jù)了。

(需要注意的是父組件中不需要接收props,只要在孫組件中接收就可以。)

然后上代碼:

//index.vue:
<Father :homeInfo="homeInfo"/>

//Father.vue:
<Son v-bind="$attrs"/>

//son.vue:
<template>
    <div class="home">
    {{homeInfo.name}}
    </div>
</template>

<script>
export default {
    name: "Son",
    data() {
        return {};
    },
    props: {
        homeInfo: {
            default: Object,
            default: () => {},
        },
    },
};
</script>

$listeners的使用:

  • 在爺組件(index.vue)中,綁定事件。
  • 在父組件中,也是類似綁定事件,但是這里綁定的不是具體的事件,而是v-on="$listeners"。
  • 在孫組件中,需要的時候觸發(fā)($emit)這個事件即可。

然后上代碼:

//index.vue:
<Father :homeInfo="homeInfo" @update="update"/>

//Father.vue:
<Son v-bind="$attrs" v-on="$listeners"/>

//son.vue:
<template>
    <div class="home" @click="update">
    {{homeInfo.name}}
    </div>
</template>

<script>
export default {
    name: "Son",
    data() {
        return {};
    },
    props: {
        homeInfo: {
            default: Object,
            default: () => {},
        },
    },
    methods: {
        update() {
            const newHome = {
                name: 'new'
            }
            this.$emit("update", newHome)
        }
    }
};
</script>

總結(jié):

其實$attrs和$listeners相當于是一個中轉(zhuǎn),主要用在父親組件上。爺組件和孫組件保持以前的使用即可!

到此這篇關(guān)于VUE中如何優(yōu)雅實現(xiàn)爺孫組件數(shù)據(jù)通信的文章就介紹到這了,更多相關(guān)VUE爺孫組件數(shù)據(jù)通信內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 關(guān)于vue3默認把所有onSomething當作v-on事件綁定的思考

    關(guān)于vue3默認把所有onSomething當作v-on事件綁定的思考

    這篇文章主要介紹了關(guān)于vue3默認把所有`onSomething`當作`v-on`事件綁定的思考,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-05-05
  • vue2模擬vue-element-admin手寫角色權(quán)限的實現(xiàn)

    vue2模擬vue-element-admin手寫角色權(quán)限的實現(xiàn)

    本文主要介紹了vue2模擬vue-element-admin手寫角色權(quán)限的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-07-07
  • vue封裝tree組件實現(xiàn)搜索功能

    vue封裝tree組件實現(xiàn)搜索功能

    本文主要介紹了vue封裝tree組件實現(xiàn)搜索功能,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-05-05
  • VUE項目中SASS的使用及說明

    VUE項目中SASS的使用及說明

    這篇文章主要介紹了VUE項目中SASS的使用及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • vue實現(xiàn)動態(tài)控制表格列的顯示隱藏

    vue實現(xiàn)動態(tài)控制表格列的顯示隱藏

    這篇文章主要為大家詳細介紹了vue實現(xiàn)動態(tài)控制表格列的顯示隱藏,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • vue 組件的封裝之基于axios的ajax請求方法

    vue 組件的封裝之基于axios的ajax請求方法

    今天小編就為大家分享一篇vue 組件的封裝之基于axios的ajax請求方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • 淺談vue使用axios的回調(diào)函數(shù)中this不指向vue實例,為undefined

    淺談vue使用axios的回調(diào)函數(shù)中this不指向vue實例,為undefined

    這篇文章主要介紹了淺談vue使用axios的回調(diào)函數(shù)中this不指向vue實例,為undefined,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • vue-cli webpack 引入jquery的方法

    vue-cli webpack 引入jquery的方法

    小編使用的是webpack模板在vue-cli生成的工程中引入jquery的方法,首先在package.json里的dependencies加入"jquery" : "^2.2.3",然后install,具體內(nèi)容詳情大家參考下本文
    2018-01-01
  • Vue解析剪切板圖片并實現(xiàn)發(fā)送功能

    Vue解析剪切板圖片并實現(xiàn)發(fā)送功能

    這篇文章主要介紹了Vue解析剪切板圖片并實現(xiàn)發(fā)送功能,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-02-02
  • vue離開頁面時如何銷毀定時器

    vue離開頁面時如何銷毀定時器

    這篇文章主要介紹了vue離開頁面時如何銷毀定時器,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05

最新評論