国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

如何使用vuex實現兄弟組件通信

2024-05-06 15:28:15
字體:
來源:轉載
供稿:網友

前言

vuex主要是是做數據交互,父子組件傳值可以很容易辦到,但是兄弟組件間傳值,需要先將值傳給父組件,再傳給子組件,異常麻煩。

下面這篇文章就來給大家介紹下vuex兄弟組件通信的方法,下面話不多說了,來一起看看詳細的介紹吧

1. 核心想法

使用vuex進行兄弟組件通信的核心思路就是將vuex作為一個store(vuex被設計的原因之一),將每個子組件的數據都存放進去,每個子組件都從vuex里獲取數據,其實就是一句話——把vuex作為一個橋

2. 具體代碼

父組件App.vue

<template> <div id="app"> <ChildA/> <ChildB/> </div></template><script> import ChildA from './components/ChildA' // 導入A組件 import ChildB from './components/ChildB' // 導入B組件 export default { name: 'App', components: {ChildA, ChildB} // 注冊A、B組件 }</script><style> #app { font-family: 'Avenir', Helvetica, Arial, sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-align: center; color: #2c3e50; margin-top: 60px; } div { margin: 10px; }</style>

子組件ChildA

<template> <div id="childA"> <h1>我是A組件</h1> <button @click="transform">點我讓B組件接收到數據</button> <p>因為你點了B,所以我的信息發生了變化:{{BMessage}}</p> </div></template><script> export default { data() { return { AMessage: 'Hello,B組件,我是A組件' } }, computed: { BMessage() { // 這里存儲從store里獲取的B組件的數據 return this.$store.state.BMsg } }, methods: { transform() { // 觸發receiveAMsg,將A組件的數據存放到store里去 this.$store.commit('receiveAMsg', {  AMsg: this.AMessage }) } } }</script><style> div#childA { border: 1px solid black; }</style>

子組件ChildB

<template> <div id="childB"> <h1>我是B組件</h1> <button @click="transform">點我讓A組件接收到數據</button> <p>因為你點了A,所以我的信息發生了變化:{{AMessage}}</p> </div></template><script> export default { data() { return { BMessage: 'Hello,A組件,我是B組件' } }, computed: { AMessage() { // 這里存儲從store里獲取的A組件的數據 return this.$store.state.AMsg } }, methods: { transform() { // 觸發receiveBMsg,將B組件的數據存放到store里去 this.$store.commit('receiveBMsg', {  BMsg: this.BMessage }) } } }</script><style> div#childB { border: 1px solid green; }</style>

vuex模塊store.js

import Vue from 'vue'import Vuex from 'vuex'Vue.use(Vuex)const state = { // 初始化A和B組件的數據,等待獲取 AMsg: '', BMsg: ''}const mutations = { receiveAMsg(state, payload) { // 將A組件的數據存放于state state.AMsg = payload.AMsg }, receiveBMsg(state, payload) { // 將B組件的數據存放于state state.BMsg = payload.BMsg }}export default new Vuex.Store({ state, mutations})            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 兴业县| 张家港市| 胶州市| 林西县| 昂仁县| 武冈市| 新沂市| 沙田区| 寻乌县| 斗六市| 汾西县| 二连浩特市| 齐齐哈尔市| 金阳县| 杭州市| 云和县| 江西省| 玉龙| 深泽县| 永德县| 上饶县| 阿拉善右旗| 横峰县| 南宁市| 乌兰浩特市| 大厂| 南宫市| 仲巴县| 桂林市| 建瓯市| 南充市| 乌拉特后旗| 界首市| 克什克腾旗| 永登县| 仁寿县| 富民县| 佛学| 额济纳旗| 安义县| 靖江市|