最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2018年11月02日 11:50:36   作者:bluesboneW  
這篇文章主要給大家介紹了關(guān)于如何使用vuex實現(xiàn)兄弟組件通信的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

前言

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

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

1. 核心想法

使用vuex進行兄弟組件通信的核心思路就是將vuex作為一個store(vuex被設(shè)計的原因之一),將每個子組件的數(shù)據(jù)都存放進去,每個子組件都從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í)價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • vue3封裝輪播圖組件功能的完整步驟

    vue3封裝輪播圖組件功能的完整步驟

    我們都知道,輪播圖組件模板結(jié)構(gòu)通常是ul包裹li的結(jié)構(gòu),在vue中,li的數(shù)量也通常是由后端接口返回的數(shù)據(jù)決定,下面這篇文章主要給大家介紹了關(guān)于vue3封裝輪播圖組件功能的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • vue中this.$router.go(-1)失效(路由改變了,界面未刷新)

    vue中this.$router.go(-1)失效(路由改變了,界面未刷新)

    本文主要介紹了vue中this.$router.go(-1)失效(路由改變了,界面未刷新),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-12-12
  • vue中v-for指令完成列表渲染

    vue中v-for指令完成列表渲染

    這篇文章主要給大家分享的是vue中v-for指令完成列表渲染,下面文化章就圍繞中v-for的相關(guān)資料在Vue中列表渲染做個簡單總結(jié)和使用演示,需要的朋友可以參考一下,希望對大家有所幫助
    2021-11-11
  • 解決父子組件通信的三種Vue插槽

    解決父子組件通信的三種Vue插槽

    這篇文章主要為大家介紹了Vue插槽解決父子組件通信,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-11-11
  • Vue聲明式導(dǎo)航與編程式導(dǎo)航及導(dǎo)航守衛(wèi)和axios攔截器全面詳細講解

    Vue聲明式導(dǎo)航與編程式導(dǎo)航及導(dǎo)航守衛(wèi)和axios攔截器全面詳細講解

    這篇文章主要介紹了Vue聲明式導(dǎo)航與編程式導(dǎo)航及導(dǎo)航守衛(wèi)和axios攔截器,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2023-01-01
  • Vue CLI3 如何支持less的方法示例

    Vue CLI3 如何支持less的方法示例

    這篇文章主要介紹了Vue CLI3 如何支持less的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • 基于Vue+Node.js實現(xiàn)埋點功能全流程

    基于Vue+Node.js實現(xiàn)埋點功能全流程

    埋點(Track)是指在應(yīng)用程序、網(wǎng)站或平臺中添加代碼,以記錄特定用戶行為和事件的做法,通過添加埋點代碼,可以觀察和分析用戶行為,以調(diào)整和改進產(chǎn)品設(shè)計和使用體驗,本文給大家介紹了基于Vue+Node.js實現(xiàn)埋點功能的全流程,需要的朋友可以參考下
    2025-04-04
  • vue項目中$t()的意思是什么

    vue項目中$t()的意思是什么

    這篇文章主要介紹了vue項目中$t()的意思是什么,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • vue elementUI Plus實現(xiàn)拖拽流程圖的詳細代碼(不引入插件)

    vue elementUI Plus實現(xiàn)拖拽流程圖的詳細代碼(不引入插件)

    文章介紹了如何使用Vue和elementUI Plus實現(xiàn)一個簡單的拖拽流程圖功能,不引入任何插件,完全手寫,設(shè)計思路,感興趣的朋友跟隨小編一起看看吧
    2025-01-01
  • 如何使用Vue的思想封裝一個Storage

    如何使用Vue的思想封裝一個Storage

    作為Web Storage API的接口,Storage 提供了訪問特定域名下的會話存儲或本地存儲的功能,例如可以添加、修改或刪除存儲的數(shù)據(jù)項,這篇文章主要給大家介紹了關(guān)于如何使用Vue的思想封裝一個Storage的相關(guān)資料,需要的朋友可以參考下
    2021-08-08

最新評論

宁国市| 钟山县| 蛟河市| 抚宁县| 芦溪县| 九龙城区| 平原县| 景东| 莱州市| 郎溪县| 东乡族自治县| 祁门县| 扬州市| 万载县| 扎兰屯市| 丽水市| 张家川| 武威市| 喀喇沁旗| 通化市| 肥东县| 海晏县| 邳州市| 南城县| 剑阁县| 乐都县| 子长县| 连平县| 宜昌市| 宣化县| 湾仔区| 丁青县| 宁安市| 兰溪市| 玛曲县| 神池县| 文山县| 甘德县| 谢通门县| 富民县| 多伦县|