之前一直用new Vue()来定义一个全局通讯的Bus,这样组件之间通讯,只需要一边emit,另一边on监听就可以了。后来改用vuex,感觉上vuex理解上只是一个全局data,当需要派发事件的时候:例如A组件的一个事件,去触发B组件的一个方法(比如说,点击某按钮,取消一个定时器等),这个时候vuex就显得很鸡肋了,我现在用的方法是,定义一个布尔值,每次触发时,取false,然后在组件内watch这个值,调用方法。
如图:
然后监听:
请问大家有好一点的方法吗?
習慣沉默2017-05-19 10:41:29
一、仅仅是想通知某个对象去更改状态,建议使用事件的方式
1.父子组件之间的事件通讯,通过在父组件监听对应的事件名,子组件触发的方式。
2.非父子组件采用Event Bus的方式
二、数据在组件之间的共享
1.中大型应用使用vuex
2.应用场景比较少的情况,父子组件采用props,非父子组件Event Bus传递数据