2 回答

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超2個贊
如果只是想兄弟組件通信的話, 可以不使用vuex, 通過一個全局的事件機(jī)制就行了
可以這樣做var eventBus = new Vue()
然后在兄弟組件里面引用這個Vue 實(shí)例, 通過$on 和 $emit 就可以了

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切分的解決方案。
添加回答
舉報