成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

用ChatGPT高效學習-Vue的組件通信方式有哪些?

人工智能
我們使用了 Vuex 來管理全局狀態。在父組件和子組件中都使用了 mapState 來獲取 message 狀態,使用 mapMutations 來觸發 updateMessage mutation 來更新 message 狀態。在 Vuex 的 store 中定義了 message 狀態和 updateMessage mutation 來更新 message 狀態。

圖片

Vue 的組件通信方式有以下幾種:

父子組件通信:父組件通過 props 向子組件傳遞數據,子組件通過 $emit 觸發事件向父組件傳遞數據。

子父組件通信:子組件通過 $emit 觸發事件向父組件傳遞數據,父組件通過 v-on 監聽子組件事件并處理數據。

兄弟組件通信:可以通過一個共同的父組件作為中介,將數據通過 props 和事件分別傳遞給兩個兄弟組件。

跨級組件通信:可以通過 provide 和 inject 來實現跨級組件通信,父組件通過 provide 提供數據,子孫組件通過 inject 注入數據。

事件總線:可以通過創建一個空的 Vue 實例作為事件總線,用于在任意組件之間傳遞事件和數據。

Vuex:Vuex 是 Vue 的狀態管理庫,可以用于管理全局狀態和實現組件之間的通信。

需要根據具體的場景和需求選擇合適的通信方式。

父子組件通信:

父組件:

<template>
<div>
<child-component :message="message" @update-message="updateMessage"></child-component>
</div>
</template>

<script>
import ChildComponent from './ChildComponent.vue';

export default {
components: {
ChildComponent
},
data() {
return {
message: 'Hello World'
}
},
methods: {
updateMessage(newMessage) {
this.message = newMessage;
}
}
}
</script>

子組件:

<template>
<div>
<p>{{ message }}</p>
<button @click="updateMessage">Update Message</button>
</div>
</template>

<script>
export default {
props: {
message: String
},
methods: {
updateMessage() {
this.$emit('update-message', 'New Message');
}
}
}
</script>

子父組件通信:

父組件:

<template>
<div>
<child-component @update-message="updateMessage"></child-component>
<p>{{ message }}</p>
</div>
</template>

<script>
import ChildComponent from './ChildComponent.vue';

export default {
components: {
ChildComponent
},
data() {
return {
message: ''
}
},
methods: {
updateMessage(newMessage) {
this.message = newMessage;
}
}
}
</script>

子組件:

<template>
<div>
<button @click="updateMessage">Update Message</button>
</div>
</template>

<script>
export default {
methods: {
updateMessage() {
this.$emit('update-message', 'New Message');
}
}
}
</script>

兄弟組件通信:

父組件:

<template>
<div>
<child-component-1 :message="message" @update-message="updateMessage"></child-component-1>
<child-component-2 :message="message"></child-component-2>
</div>
</template>

<script>
import ChildComponent1 from './ChildComponent1.vue';
import ChildComponent2 from './ChildComponent2.vue';

export default {
components: {
ChildComponent1,
ChildComponent2
},
data() {
return {
message: 'Hello World'
}
},
methods: {
updateMessage(newMessage) {
this.message = newMessage;
}
}
}
</script>

子組件1:

<template>
<div>
<p>{{ message }}</p>
<button @click="updateMessage">Update Message</button>
</div>
</template>

<script>
export default {
props: {
message: String
},
methods: {
updateMessage() {
this.$emit('update-message', 'New Message');
}
}
}
</script>

子組件2:

<template>
<div>
<p>{{ message }}</p>
</div>
</template>

<script>
export default {
props: {
message: String
}
}
</script>

跨級組件通信:

父組件:

<template>
<div>
<child-component></child-component>
</div>
</template>

<script>
import ChildComponent from './ChildComponent.vue';

export default {
components: {
ChildComponent
},
provide() {
return {
message: 'Hello World'
}
}
}
</script>

子組件:

<template>
<div>
<grandchild-component></grandchild-component>
</div>
</template>

<script>
import GrandchildComponent from './GrandchildComponent.vue';

export default {
components: {
GrandchildComponent
}
}
</script>

孫子組件:

<template>
<div>
<p>{{ message }}</p>
</div>
</template>

<script>
export default {
inject: ['message']
}
</script>

事件總線:

<template>
<div>
<button @click="updateMessage">Update Message</button>
</div>
</template>

<script>
export default {
methods: {
updateMessage() {
EventBus.$emit('update-message', 'New Message');
}
}
}

const EventBus = new Vue();
</script>

Vuex:

Vuex 是 Vue 的狀態管理庫,可以用于管理全局狀態和實現組件之間的通信。

以下是一個簡單的示例:

<template>
<div>
<p>{{ message }}</p>
<button @click="updateMessage">Update Message</button>
</div>
</template>

<script>
import { mapState, mapMutations } from 'vuex';

export default {
computed: {
...mapState(['message'])
},
methods: {
...mapMutations(['updateMessage'])
}
}
</script>
<template>
<div>
<p>{{ message }}</p>
</div>
</template>

<script>
import { mapState } from 'vuex';

export default {
computed: {
...mapState(['message'])
}
}
</script>
import Vue from 'vue';
import Vuex from 'vuex';

Vue.use(Vuex);

export default new Vuex.Store({
state: {
message: 'Hello World'
},
mutations: {
updateMessage(state, newMessage) {
state.message = newMessage;
}
}
});

在這個示例中,我們使用了 Vuex 來管理全局狀態。在父組件和子組件中都使用了 mapState 來獲取 message 狀態,使用 mapMutations 來觸發 updateMessage mutation 來更新 message 狀態。在 Vuex 的 store 中定義了 message 狀態和 updateMessage mutation 來更新 message 狀態。

責任編輯:武曉燕 來源: 前端技術江湖
相關推薦

2021-07-05 11:06:11

組件React通信

2022-05-06 08:47:10

Vue 3組件前端

2019-04-10 08:24:06

vue組件通信

2019-08-14 10:00:08

vue組件通信前端

2019-05-29 14:23:53

Vue.js組件通信

2023-12-04 07:14:40

通信微服務

2024-10-15 07:42:09

Vue動態加載

2022-03-11 12:31:04

Vue3組件前端

2023-11-13 09:28:20

跨組件組件化

2019-05-15 08:00:00

vue組件間通信前端

2024-01-09 08:34:56

Vue3.js組件通信

2021-12-26 09:22:44

前端Css圖標

2017-07-25 08:54:26

前端JsxVue

2020-09-12 16:22:27

Vue

2024-01-26 08:49:47

ChatGPT搜索方式

2024-01-23 16:54:38

2016-01-06 15:00:49

2023-04-27 11:07:24

Setup語法糖Vue3

2021-07-02 07:06:20

React組件方式

2021-09-08 10:31:01

設計組件設計師界面
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩一区二区三区在线视频 | 亚洲精品国产成人 | 精品国产欧美一区二区 | 久久激情五月丁香伊人 | 久久精品国产免费看久久精品 | 九九伦理片 | 色播99| 综合色久 | 久久视频精品 | 久久i| 免费国产视频在线观看 | 中文字幕一区二区三区不卡 | 日韩在线精品视频 | 久久午夜电影 | 天天天天天天天干 | 国产最新网址 | 国产乱码高清区二区三区在线 | 成人一区二 | 国产精品视频一二三 | 中文字幕男人的天堂 | av三级 | 日本精品视频一区二区三区四区 | 97久久久久久 | www.788.com色淫免费 | 精品福利av导航 | 成人一区二| 亚洲精品国产区 | 看一级黄色毛片 | 在线日韩| 色网在线观看 | 中文字幕日韩欧美一区二区三区 | 毛片毛片毛片毛片毛片 | 成人福利在线视频 | 国产精品久久久久久久岛一牛影视 | www.中文字幕| 久久久av一区 | 久久狼人天堂 | 久久色视频 | 成人乱人乱一区二区三区软件 | 国产精品久久久久久久久久久久冷 | 亚洲一区欧美 |