前言
為冊(cè)亨等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及冊(cè)亨網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、冊(cè)亨網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!
兄弟組件的信息傳遞有三種方式:
1.vuex 傳遞。
會(huì)將信息公有化。
此方法可在所有組件間傳遞數(shù)據(jù)。
2.建立Vue 實(shí)例模塊傳遞數(shù)據(jù)。
Vue 實(shí)例模塊會(huì)成為共用的事件觸發(fā)器。
其通過事件傳遞的信息不回被公有化。
3.建立事件鏈傳遞數(shù)據(jù)。
一個(gè)兄弟組件通過事件將信息傳給兄弟組件共有的父組件。
父組件再將信息通過屬性傳遞給另一個(gè)兄弟組件。
若兄弟組件不是親兄弟,而是堂兄弟,也就是他們有一個(gè)共同的爺爺,那么此方法會(huì)使程序變得繁瑣。
一,vuex 傳遞數(shù)據(jù)
1.安裝vuex
npm install vuex --save
2.store.js
import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) export const store=new Vuex.Store({ state:{ msgFromA:'A 還沒說話', msgFromB:'B 還沒說話' }, getters:{ }, mutations:{ msgAChange(state,msg){ state.msgFromA=msg; }, msgBChange(state,msg){ state.msgFromB=msg; }, } })
3.子組件A.vue
<template> <div class="a"> <h4>A 模塊</h4> <p>B 說:{{msgFromB}}</p> <button @click="aSay">A 把自己的信息傳給B</button> </div> </template> <script> export default { data () { return { msg:'我是A', } }, methods:{ aSay(){ this.$store.commit('msgAChange', this.msg); } }, computed: { msgFromB() { return this.$store.state.msgFromB; } } } </script>
4.子組件B.vue
<template> <div class="b"> <h4>B 模塊</h4> <p>A 說:{{msgFromA}}</p> <button @click="bSay">B 把自己的信息傳給A</button> </div> </template> <script> export default { data () { return { msg:'我是B' } }, methods:{ bSay(){ this.$store.commit('msgBChange', this.msg); } }, computed: { msgFromA() { return this.$store.state.msgFromA; } } } </script>
二,Vue 實(shí)例模塊傳遞數(shù)據(jù)
1.建立Vue 實(shí)例模塊 bus.js
import Vue from 'vue' export default new Vue();
2.子組件 A.vue
<template> <div class="a"> <h4>A 模塊</h4> <p>B 說:{{msgFromB}}</p> <button @click="aSay">A 把自己的信息傳給B</button> </div> </template> <script> import Bus from '../util/Bus' export default { data () { return { msg:'我是A', msgFromB:'B 還沒說話', } }, created(){ let _this=this; Bus.$on('msgBChange',function(dt){ _this.msgFromB=dt; }) }, methods:{ aSay(){ Bus.$emit('msgAChange',this.msg); } } } </script>
3.子組件 B.vue
<template> <div class="b"> <h4>B 模塊</h4> <p>A 說:{{msgFromA}}</p> <button @click="bSay">B 把自己的信息傳給A</button> </div> </template> <script> import Bus from '../util/Bus' export default { data () { return { msg:'我是B', msgFromA:'A 還沒說話' } }, created(){ let _this=this; Bus.$on('msgAChange',function(dt){ _this.msgFromA=dt; }) }, methods:{ bSay(){ Bus.$emit('msgBChange',this.msg); } } } </script>
三,事件鏈傳遞數(shù)據(jù)
1.父組件 C.vue
<template> <div class="c"> <h4>事件鏈傳遞數(shù)據(jù)</h4> <appA :msg-from-b="msgFromB" v-on:msg-a-change="aSay"></appA> <appB :msg-from-a="msgFromA" v-on:msg-b-change="bSay"></appB> </div> </template> <script> import A from '../a3/A' import B from '../b3/B' export default { data () { return { msgFromA:'A 還沒說話', msgFromB:'B 還沒說話' } }, methods:{ aSay(msg){ this.msgFromA=msg; }, bSay(msg){ this.msgFromB=msg; }, }, components:{ appA:A, appB:B, } } </script>
2.子組件 A.vue
<template> <div class="a"> <h4>A 模塊</h4> <p>B 說:{{msgFromB}}</p> <button @click="aSay">A 把自己的信息傳給B</button> </div> </template> <script> export default { data () { return { msg:'我是A', } }, methods:{ aSay(){ this.$emit('msg-a-change', this.msg) } }, props: ['msgFromB'], } </script>
3.子組件 B.vue
<template> <div class="b"> <h4>B 模塊</h4> <p>A 說:{{msgFromA}}</p> <button @click="bSay">B 把自己的信息傳給A</button> </div> </template> <script> import Bus from '../util/Bus' export default { data () { return { msg:'我是B', } }, methods:{ bSay(){ this.$emit('msg-b-change', this.msg) } }, props: ['msgFromA'], } </script>
總結(jié)
以上所述是小編給大家介紹的vue 兄弟組件的信息傳遞的方法,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)創(chuàng)新互聯(lián)網(wǎng)站的支持!
如果你覺得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
網(wǎng)站名稱:vue兄弟組件的信息傳遞的方法實(shí)例詳解
文章URL:http://chinadenli.net/article2/ihdoic.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)、、虛擬主機(jī)、App開發(fā)、搜索引擎優(yōu)化、網(wǎng)站排名
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)