如果我不在路由器中,为什么它会从其他路由器进行API调用,Vue Router

p8h8hvxi  于 2023-02-24  发布在  Vue.js
关注(0)|答案(1)|浏览(173)

我正在创建一个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中

u5rb5r59

u5rb5r591#

this.$bus.$on(...)为您访问的每个路由创建一个新的事件侦听器。由于$bus是一个全局对象,这些事件侦听器不会因为您离开路由而被删除。您需要确保在您离开之前,您删除了组件的已销毁生命周期钩子中的旧侦听器。

destroyed() {
    this.$bus.$off('reloadData');
}

相关问题