您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關使用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"> <h2>我是A組件</h2> <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"> <h2>我是B組件</h2> <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 })
我把所有的代碼+注釋都放在github了,源碼鏈接,預覽鏈接
感謝各位的閱讀!關于“使用vuex實現兄弟組件通信的方法”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。