欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

前言

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

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

1. 核心想法

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

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} // 注冊(cè)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">點(diǎn)我讓B組件接收到數(shù)據(jù)</button>
 <p>因?yàn)槟泓c(diǎn)了B,所以我的信息發(fā)生了變化:{{BMessage}}</p>
 </div>
</template>

<script>
 export default {
 data() {
 return {
 AMessage: 'Hello,B組件,我是A組件'
 }
 },
 computed: {
 BMessage() {
 // 這里存儲(chǔ)從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">點(diǎn)我讓A組件接收到數(shù)據(jù)</button>
 <p>因?yàn)槟泓c(diǎn)了A,所以我的信息發(fā)生了變化:{{AMessage}}</p>
 </div>
</template>

<script>
 export default {
 data() {
 return {
 BMessage: 'Hello,A組件,我是B組件'
 }
 },
 computed: {
 AMessage() {
 // 這里存儲(chǔ)從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é)

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

相關(guān)文章

  • Vue中的百度地圖定位BMap.GeolocationControl的用法

    Vue中的百度地圖定位BMap.GeolocationControl的用法

    BMap.GeolocationControl?是百度地圖API中的一個(gè)類(lèi),用于添加地理定位控件到地圖上,以便用戶可以通過(guò)該控件獲取自己的當(dāng)前位置,本文給大家介紹Vue中的百度地圖定位BMap.GeolocationControl的用法,感興趣的朋友跟隨小編一起看看吧
    2023-10-10
  • 使用Vue3+ElementPlus前端實(shí)現(xiàn)分片上傳的全過(guò)程

    使用Vue3+ElementPlus前端實(shí)現(xiàn)分片上傳的全過(guò)程

    ElementPlus是一套為開(kāi)發(fā)者、設(shè)計(jì)師和產(chǎn)品經(jīng)理準(zhǔn)備的基于Vue?3.0的組件庫(kù),提供了配套設(shè)計(jì)資源,幫助你的網(wǎng)站快速成型,下面這篇文章主要給大家介紹了關(guān)于使用Vue3+ElementPlus前端實(shí)現(xiàn)分片上傳的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • vue前后端端口不一致的問(wèn)題解決

    vue前后端端口不一致的問(wèn)題解決

    本文主要介紹了vue前后端端口不一致的問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-10-10
  • Vue組件之全局組件與局部組件的使用詳解

    Vue組件之全局組件與局部組件的使用詳解

    本篇文章主要介紹了Vue組件之全局組件與局部組件的使用詳解,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • VUE中v-on:click事件中獲取當(dāng)前dom元素的代碼

    VUE中v-on:click事件中獲取當(dāng)前dom元素的代碼

    這篇文章主要介紹了VUE中v-on:click事件中獲取當(dāng)前dom元素的代碼,文中同時(shí)給大家提到了v-on:click獲取當(dāng)前事件對(duì)象元素的方法,需要的朋友可以參考下
    2018-08-08
  • Vue中Axios配置不同的baseURL,請(qǐng)求不同的域名接口方式

    Vue中Axios配置不同的baseURL,請(qǐng)求不同的域名接口方式

    這篇文章主要介紹了Vue中Axios配置不同的baseURL,請(qǐng)求不同的域名接口方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Vue3 SFC 和 TSX 方式自定義組件實(shí)現(xiàn) v-model的詳細(xì)過(guò)程

    Vue3 SFC 和 TSX 方式自定義組件實(shí)現(xiàn) v-model的詳細(xì)

    v-model 是 vue3 中的一個(gè)內(nèi)置指令,很多表單元素都可以使用這個(gè)屬性,如 input、checkbox 等,咱可以在自定義組件中實(shí)現(xiàn) v-model,這篇文章主要介紹了Vue3 SFC 和 TSX 方式自定義組件實(shí)現(xiàn) v-model,需要的朋友可以參考下
    2022-10-10
  • van-dialog 組件調(diào)用報(bào)錯(cuò)的解決

    van-dialog 組件調(diào)用報(bào)錯(cuò)的解決

    這篇文章主要介紹了van-dialog 組件調(diào)用報(bào)錯(cuò)的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • vue加載天氣組件使用方法詳解

    vue加載天氣組件使用方法詳解

    這篇文章主要為大家詳細(xì)介紹了vue加載天氣組件的使用方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • vant中如何修改用戶的頭像

    vant中如何修改用戶的頭像

    這篇文章主要介紹了vant中如何修改用戶的頭像,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08

最新評(píng)論