遇到一个问题,就是我在使用全局事件总线的时候发布了一个事件,然后在a组件里面这个时间会被触发一次,在b组件里面也会触发一次.这两个组件是平级组件不是嵌套组件.然后呢,在a组件触发完之后,我去了b组件,在b组件中触发相同时间的时候,a组件的逻辑和b组件的逻辑都执行了一次.
一开始我在想,他两都不在用一个组件里面,为啥我触发b的时候a也会执行,然后我验证一下,先触发a,b不会触发,先触发a,再触发b,这个时候a也会触发. 然后我就想,应该是这个时间没有$off关掉,导致了前者触发了,后者再触发的时候前者也跟着触发了. 为了解决这种情况,只有在组件销毁的时候将上一个事件解绑,这样在触发下一个事件的时候前一个事件就不会执行了. 在vue的boforedistory这个钩子中解绑是最好的.
然后,这个问题让我觉得,在vue中这个boforedistory钩子用的确实是少,但并不代表不会用到,存在即合理,他肯定有自己的用处才会存在.还是要对新自己不了解的事务保持一个特殊的心里状态,在需要的时候才会能够拿来使用