第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Vue兄弟組件事件觸發(fā)和通信問題,Vuex完全不會用

Vue兄弟組件事件觸發(fā)和通信問題,Vuex完全不會用

萬千封印 2018-09-03 16:05:13
本來想用Vuex狀態(tài)管理的,但是在兄弟組件事件觸發(fā)上遇到了很大的問題,只好按官方的說法用了總線的形式:var bus = new Vue();//A組件觸發(fā):methods: {        //上傳方法        confirmEdit(){            bus.$emit('confirmEdit');        },    }//B組件調(diào)用:created (){    bus.$on('confirmEdit', () => {        this.addModal.name = somthing        this.customAlertFunc(...)    }也用到了store:    var store = new Vuex.Store({        state: {            shopId:parseURL().shopId,            reservationShopList:[],            isTabHide: false,            isEdit: false,        }    });結(jié)果只是用來儲存一部分變量,其實(shí)換成全局變量也完全可以= =|| :    var commonData = {        shopId: parseURL().shopId,        reservationShopList: [],        isTabHide: false,        isEdit: false,    }網(wǎng)上也找不到Vuex的正確的使用方法啊…這玩意到底怎么用?和全局變量區(qū)別在哪里?怎么用Vuex把總線替掉?問題補(bǔ)充:求一個總線的Vuex實(shí)現(xiàn)
查看完整描述

2 回答

?
慕婉清6462132

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超2個贊

如果只是想兄弟組件通信的話, 可以不使用vuex, 通過一個全局的事件機(jī)制就行了

可以這樣做
var eventBus = new Vue()
然后在兄弟組件里面引用這個Vue 實(shí)例, 通過$on 和 $emit 就可以了


查看完整回答
反對 回復(fù) 2018-09-09
?
婷婷同學(xué)_

TA貢獻(xiàn)1844條經(jīng)驗(yàn) 獲得超8個贊

實(shí)際上vue1.X里面是有類似方法的,$dispatch 和 $broadcast,就是和總線相同的用法。
但是在vue2.X被移除了,原因是事件流會因此變得脆弱而難以理解,Bus實(shí)際是broadcast的升級版:

通過使用事件中心,允許組件自由交流,無論組件處于組件樹的哪一層。由于 Vue 實(shí)例實(shí)現(xiàn)了一個事件分發(fā)接口,你可以通過實(shí)例化一個空的 Vue 實(shí)例來實(shí)現(xiàn)這個目的。

如果要改寫成VUEX,推薦的做法是把所有數(shù)據(jù),和相關(guān)方法全部置入store,所有子組件只需要發(fā)送mutation調(diào)取store中的方法和數(shù)據(jù),雖然看起來這種做法會讓store顯得過于臃腫龐大,但是對于復(fù)雜系統(tǒng)的構(gòu)建是更具優(yōu)勢的。而且官方也提供了將store切分的解決方案。


查看完整回答
反對 回復(fù) 2018-09-09
  • 2 回答
  • 0 關(guān)注
  • 1958 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號