成人免费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

通信微服務

2022-03-11 12:31:04

Vue3組件前端

2024-10-15 07:42:09

Vue動態加載

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

2024-01-26 08:49:47

ChatGPT搜索方式

2020-09-12 16:22:27

Vue

2023-04-27 11:07:24

Setup語法糖Vue3

2024-01-23 16:54:38

2016-01-06 15:00:49

2021-07-02 07:06:20

React組件方式

2021-09-15 08:09:43

前端技術編程
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 在线看av网址 | 国产亚洲久 | 欧美成人自拍 | 久久国产一区二区三区 | 中文在线一区二区 | 激情欧美日韩一区二区 | 日韩在线日韩 | 国产精品久久一区 | 欧美一区二区三区的 | 91国内精品久久 | 嫩草视频在线免费观看 | 激情国产视频 | 精品日本中文字幕 | 免费成人av | 中文字幕蜜臀 | 国产亚洲精品久久久久动 | 一区二区三区高清不卡 | 粉色午夜视频 | 在线日韩av电影 | 一区日韩| 久久综合久久久 | 精品国产第一区二区三区 | 一区二区三区在线免费观看 | 欧美最猛性xxxxx亚洲精品 | 国产精品1区2区3区 男女啪啪高潮无遮挡免费动态 | 国产精品久久久久久久毛片 | 亚洲字幕在线观看 | 一区二区三区视频 | 五月婷婷激情网 | 亚洲天堂久久新 | 日本免费黄色 | 一区二区在线免费观看视频 | 国产乱码精品1区2区3区 | 国产激情在线播放 | 国产精品夜夜春夜夜爽久久电影 | 久久国产亚洲 | 国产在线观看一区二区三区 | 国产精品美女在线观看 | 国产色播av在线 | 日韩av免费在线观看 | 精品国产乱码久久久久久闺蜜 |