我正在创建一个Vue应用程序,在每个路由中创建一个调用API的表,该表位于一个单独的组件中,它监听来自eventBus的事件,以便重新加载数据。
DataTable.vue
this.$bus.$on('reloadData', () => {
this.getRecords()
})
路线A
<datatable></datatable>
路线B
<datatable></datatable>
组件内部工艺路线B
this.$bus.$emit('reloadData')
正如您所看到的,该事件是从路径B的模态组件发出的(我在这里),但执行此操作时,如果在转到路线B之前,我在路线A、C、D中,当我从模态发出事件时,请求的次数与访问的路线相同(A,C,D)并且具有数据表组件。好像它们将堆叠,并且路由A,C,D的组件是活动的,但事实并非如此,因为我在路由B中
1条答案
按热度按时间u5rb5r591#
this.$bus.$on(...)
为您访问的每个路由创建一个新的事件侦听器。由于$bus
是一个全局对象,这些事件侦听器不会因为您离开路由而被删除。您需要确保在您离开之前,您删除了组件的已销毁生命周期钩子中的旧侦听器。