一定要销毁!!!!一定要销毁!!!
页面A发送方(组件emit触发事件);
页面B接收方(on接收事件);
踩坑1:
问题一
第一次触发的时候页面B中的on事件没有被触发;
产生原因:
当我们还在页面A的时候,页面B还没生成,也就是页面B中的 created(或mounted)中所监听的来自于A中的事件还没有被触发。这个时候当你A中emit事件的时候,B其实是没有监听到的。这个需要看一下两个组件的生成顺序了!可以通过在钩子函数中想法$emit实现。若实现不行则不适用。
后面再一次依次去触发的时候会出现,每一次都会发现好像之前的on事件分发都没有被撤销一样,导致每一次的事件触发执行越来越多。
就是说,这个$on事件是不会自动清楚销毁的,需要我们手动来销毁。
// 在B组件页面中添加以下语句,在组件beforeDestory的时候销毁。
beforeDestroy () {
bus.$off('get', this.myhandle)
},
注:有时我们会需要A和B页面一直不销毁的情况,同时还想在A页面中多次触发,在B组件中执行完监听后,一定要在手动销毁,同时在beforeDestroy 中也要销毁。