美文网首页
el-tabs组件使用EventBus引发的重复执行问题

el-tabs组件使用EventBus引发的重复执行问题

作者: linqii | 来源:发表于2020-08-18 17:51 被阅读0次

问题描述
  在a页面使用elementUI中的 el-tabs组件,并且子元素 el-tab-pane 也是用 v-if控制显示隐藏的,在mounted 里$on 了一个方法,b页面使用$emit去触发这个方法。如果在a页面点击多个tab后,在b页面去触发方法就会触发多次。

//a.vue
mounted(){
    EventBus.$on('refreshShopList', queryData => {
            this.getShopList(queryData)
        })
}
//b.vue
//刷新线索池
refreshShopList(){
    EventBus.$emit('refreshShopList')
},

原因
  页面不强制刷新,组件切换,EventBus.$on方法会被多次绑定,造成事件多次触发。

解决思路
  在每次调用方法前先解绑事件(EventBus.$off),然后再重新绑定( EventBus.$on)。

//a.vue
mounted(){
    EventBus.$off('refreshShopList')
    EventBus.$on('refreshShopList', queryData => {
            this.getShopList(queryData)
        })
}

相关文章

网友评论

      本文标题:el-tabs组件使用EventBus引发的重复执行问题

      本文链接:https://www.haomeiwen.com/subject/xbjkjktx.html