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

首頁 > 編程 > JavaScript > 正文

如何使用vuex實現(xiàn)兄弟組件通信

2019-11-19 12:35:36
字體:
供稿:網(wǎng)友

前言

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

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

1. 核心想法

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

2. 具體代碼

父組件App.vue

<template> <div id="app"> <ChildA/> <ChildB/> </div></template><script> import ChildA from './components/ChildA' // 導(dǎo)入A組件 import ChildB from './components/ChildB' // 導(dǎo)入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組件接收到數(shù)據(jù)</button> <p>因為你點了B,所以我的信息發(fā)生了變化:{{BMessage}}</p> </div></template><script> export default { data() { return { AMessage: 'Hello,B組件,我是A組件' } }, computed: { BMessage() { // 這里存儲從store里獲取的B組件的數(shù)據(jù) return this.$store.state.BMsg } }, methods: { transform() { // 觸發(fā)receiveAMsg,將A組件的數(shù)據(jù)存放到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組件接收到數(shù)據(jù)</button> <p>因為你點了A,所以我的信息發(fā)生了變化:{{AMessage}}</p> </div></template><script> export default { data() { return { BMessage: 'Hello,A組件,我是B組件' } }, computed: { AMessage() { // 這里存儲從store里獲取的A組件的數(shù)據(jù) return this.$store.state.AMsg } }, methods: { transform() { // 觸發(fā)receiveBMsg,將B組件的數(shù)據(jù)存放到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組件的數(shù)據(jù),等待獲取 AMsg: '', BMsg: ''}const mutations = { receiveAMsg(state, payload) { // 將A組件的數(shù)據(jù)存放于state state.AMsg = payload.AMsg }, receiveBMsg(state, payload) { // 將B組件的數(shù)據(jù)存放于state state.BMsg = payload.BMsg }}export default new Vuex.Store({ state, mutations})

我把所有的代碼+注釋都放在github了,源碼鏈接預(yù)覽鏈接 

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對武林網(wǎng)的支持。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 城固县| 营口市| 海淀区| 广西| 乌鲁木齐县| 罗城| 吉林省| 柳州市| 于都县| 永仁县| 武乡县| 秦安县| 汉川市| 中卫市| 枞阳县| 南澳县| 馆陶县| 韶关市| 梧州市| 金溪县| 莆田市| 林州市| 宁都县| 龙陵县| 祁门县| 静安区| 洛浦县| 玛多县| 沙雅县| 安阳市| 黎城县| 玉门市| 五常市| 马公市| 阳西县| 哈巴河县| 常宁市| 武威市| 湖南省| 凤城市| 长沙县|