亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

深入理解?Vue?3實(shí)現(xiàn)組件通信的方法

 更新時間:2024年07月19日 08:57:33   作者:最小生成樹  
本文將介紹幾種常見的?Vue?3?組件通信方法,包括?props、emits、provide?和?inject、事件總線以及?Vuex?狀態(tài)管理,需要的朋友可以參考下

在 Vue 3 中,組件通信是一個關(guān)鍵的概念,它允許我們在組件之間傳遞數(shù)據(jù)和事件。本文將介紹幾種常見的 Vue 3 組件通信方法,包括 props、emits、provide 和 inject、事件總線以及 Vuex 狀態(tài)管理。

1. 使用 props 和 emits 進(jìn)行父子組件通信

props 傳遞數(shù)據(jù)

props 是父組件向子組件傳遞數(shù)據(jù)的一種機(jī)制。在子組件中,通過定義 props 屬性來接收父組件傳遞的數(shù)據(jù)。

父組件 (ParentComponent.vue):

<template>
  <ChildComponent :message="parentMessage" />
</template>
<script>
import ChildComponent from './ChildComponent.vue';
export default {
  components: {
    ChildComponent
  },
  data() {
    return {
      parentMessage: 'Hello from Parent Component!'
    };
  }
};
</script>

子組件 (ChildComponent.vue):

<template>
  <div>{{ message }}</div>
</template>
<script>
export default {
  props: {
    message: {
      type: String,
      required: true
    }
  }
};
</script>

emits 傳遞事件

子組件可以通過 $emit 方法向父組件發(fā)送事件,從而實(shí)現(xiàn)從子組件向父組件傳遞信息。

子組件 (ChildComponent.vue):

<template>
  <button @click="sendMessage">Send Message</button>
</template>
<script>
export default {
  emits: ['messageSent'],
  methods: {
    sendMessage() {
      this.$emit('messageSent', 'Hello from Child Component!');
    }
  }
};
</script>

父組件 (ParentComponent.vue):

<template>
  <ChildComponent @messageSent="handleMessage" />
</template>
<script>
import ChildComponent from './ChildComponent.vue';
export default {
  components: {
    ChildComponent
  },
  methods: {
    handleMessage(message) {
      console.log(message);
    }
  }
};
</script>

2. 使用 provide 和 inject 進(jìn)行祖孫組件通信

provide 和 inject 允許祖父組件和孫組件之間進(jìn)行通信,而不需要通過中間的父組件傳遞數(shù)據(jù)。

祖父組件 (GrandparentComponent.vue):

<template>
  <ParentComponent />
</template>
<script>
import ParentComponent from './ParentComponent.vue';
export default {
  components: {
    ParentComponent
  },
  provide() {
    return {
      grandparentMessage: 'Hello from Grandparent Component!'
    };
  }
};
</script>

孫組件 (GrandchildComponent.vue):

<template>
  <div>{{ grandparentMessage }}</div>
</template>
<script>
export default {
  inject: ['grandparentMessage']
};
</script>

3. 使用事件總線進(jìn)行兄弟組件通信

事件總線是一種常見的用于兄弟組件通信的方法,通常使用 Vue 實(shí)例作為事件總線。

事件總線 (eventBus.js):

import { reactive } from 'vue';
const eventBus = reactive({});
export default eventBus;

組件 A (ComponentA.vue):

<template>
  <button @click="sendMessage">Send Message to Component B</button>
</template>
<script>
import eventBus from './eventBus.js';
export default {
  methods: {
    sendMessage() {
      eventBus.message = 'Hello from Component A!';
    }
  }
};
</script>

組件 B (ComponentB.vue):

<template>
  <div>{{ message }}</div>
</template>
<script>
import { reactive, toRefs } from 'vue';
import eventBus from './eventBus.js';
export default {
  setup() {
    const state = reactive({
      message: ''
    });
    state.message = eventBus.message;
    return {
      ...toRefs(state)
    };
  }
};
</script>

到此這篇關(guān)于深入理解 Vue 3 組件通信的文章就介紹到這了,更多相關(guān)Vue 3 組件通信內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue3中引入SCSS和LESS依賴的基本步驟和注意事項(xiàng)

    Vue3中引入SCSS和LESS依賴的基本步驟和注意事項(xiàng)

    我們項(xiàng)目開發(fā)中經(jīng)常遇到樣式里面會使用less和scss寫法, less,scss和stylus都是css的預(yù)處理器,這篇文章主要給大家介紹了關(guān)于Vue3中引入SCSS和LESS依賴的基本步驟和注意事項(xiàng),需要的朋友可以參考下
    2024-05-05
  • Vue 實(shí)現(xiàn)登錄界面驗(yàn)證碼功能

    Vue 實(shí)現(xiàn)登錄界面驗(yàn)證碼功能

    本文通過實(shí)例代碼給大家介紹了Vue 實(shí)現(xiàn)登錄界面 驗(yàn)證碼功能,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-01-01
  • Vue3屬性綁定方法解析

    Vue3屬性綁定方法解析

    這篇文章主要介紹了Vue3屬性綁定方法解析,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09
  • ElementUI中el-tabs事件綁定的具體使用

    ElementUI中el-tabs事件綁定的具體使用

    本文主要介紹了ElementUI中el-tabs事件綁定的具體使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • Vue數(shù)字相加、相減精度丟失處理3種方法

    Vue數(shù)字相加、相減精度丟失處理3種方法

    這篇文章主要給大家介紹了關(guān)于Vue數(shù)字相加、相減精度丟失處理3種方法的相關(guān)資料,前端在操作加減乘除計(jì)算時,經(jīng)常會出現(xiàn)精度缺失問題,有時會顯示為科學(xué)計(jì)數(shù)的樣式,需要的朋友可以參考下
    2023-08-08
  • vue3項(xiàng)目新用戶引導(dǎo)組件driver.js示例詳解

    vue3項(xiàng)目新用戶引導(dǎo)組件driver.js示例詳解

    好用的用戶引導(dǎo)插件有?intro.js?和?driver.js?兩個,對比了一下,最終還是使用了driver.js,這篇文章主要介紹了vue3項(xiàng)目新用戶引導(dǎo)組件(driver.js),需要的朋友可以參考下
    2022-08-08
  • Vue實(shí)現(xiàn)計(jì)數(shù)器案例

    Vue實(shí)現(xiàn)計(jì)數(shù)器案例

    這篇文章主要為大家詳細(xì)介紹了Vue計(jì)數(shù)器案例的實(shí)現(xiàn)方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • Vue單頁及多頁應(yīng)用全局配置404頁面實(shí)踐記錄

    Vue單頁及多頁應(yīng)用全局配置404頁面實(shí)踐記錄

    無論單頁還是多頁,我的實(shí)現(xiàn)思路是總體配置404頁面的思路就是在前端路由表中添加一個 path: '/404' 的路由,渲染相應(yīng)的404頁面。這篇文章主要介紹了Vue單頁及多頁應(yīng)用全局配置404頁面實(shí)踐,需要的朋友可以參考下
    2018-05-05
  • Vue手寫橫向輪播圖的實(shí)例

    Vue手寫橫向輪播圖的實(shí)例

    這篇文章主要介紹了Vue手寫橫向輪播圖的實(shí)例,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • vue/cli3.0腳手架部署到nginx時頁面空白的問題及解決

    vue/cli3.0腳手架部署到nginx時頁面空白的問題及解決

    這篇文章主要介紹了vue/cli3.0腳手架部署到nginx時頁面空白的問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10

最新評論