国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 德昌县| 钦州市| 和静县| 珲春市| 海阳市| 金秀| 老河口市| 新和县| 松原市| 西平县| 都江堰市| 芦溪县| 叙永县| 屏边| 陕西省| 镇雄县| 桓台县| 阳高县| 浑源县| 安溪县| 阿合奇县| 长寿区| 永清县| 永城市| 包头市| 南川市| 凌云县| 察隅县| 屏边| 水城县| 陇川县| 行唐县| 宁夏| 黎川县| 突泉县| 余庆县| 普兰县| 炎陵县| 武安市| 密山市| 庆元县|