在使用vue事件总线执行$emit("someEvent")
时,事件总线$on回调函数中this.$refs.someComponent
报错,提示someComponent组件不存在。
【解决vue事件总线$on中获取不到组件实例】原因是在组件切换时someComponent已销毁 ,但是对应的事件监听还存在,导致后来emit到了历史包含已销毁组件的事件函数。
解决方法是在使用事件总线时及时在组件beforeDestroy
(销毁),同时清除掉对应注册的事件 eventBus.$off('someEvent')
。
mounted () {
eventBus.$on('someEvent', () => { //执行someComponent中的doAddList
this.$refs.someComponent.doAddList(...);
});
},
beforeDestroy () {
eventBus.$off('someEvent')
},
推荐阅读
- vue2.x版本中computed和watch的使用入门详解-watch篇
- vue实现文字展开收起功能
- 使用Vue3和Vue2进行开发的区别
- 微信小程序中英文转换
- 最好用的 12 款 Vue Timepicker 时间日期选择器测评推荐 - 卡拉云
- 如何在 Vue 中加入图表 - Vue echarts 使用教程 - 卡拉云
- 防御式CSS是什么(这几点属性重点防御!)
- Vite + Vue3 初体验 —— Vue3 篇
- vue移动端下拉刷新和上拉加载组件,体积小运行快