是否可以从Vue路由器获取触发路由更改的点击元素?

Is it possible to get the clicked element that triggers a route change from the Vue router?

我有一个按钮可以触发我的 Vue 应用程序中的路由更改。我希望按钮元素可以在组件的 $route 对象中作为路由更改的“事件目标”访问(类似于单击事件中的 event.target)。

这可能吗?

如果不是,获取路由更改原因的最佳方法是什么?

您正在寻找 Navigation Guards。有

您可以在 In-Component Guard beforeRouteLeave(to, from) 中获取导致组件中路由更改的特定按钮。这个特定的守卫可以访问具有所有道具和反应状态(包括按钮引用)的组件的 this


根据文档,这就是每个守卫落入 导航流程 操作的方式:

  • 导航触发。
  • 在停用的组件中调用 beforeRouteLeave 守卫。
  • 呼叫全局 beforeEach 守卫。
  • 在重复使用的组件中调用 beforeRouteUpdate 守卫。
  • 在路由配置中调用 beforeEnter
  • 解析异步路由组件。
  • 在激活的组件中调用beforeRouteEnter
  • 呼叫全局 beforeResolve 守卫。
  • 导航已确认。
  • 调用全局 afterEach 挂钩。
  • DOM 已触发更新。
  • beforeRouteEnter 具有实例化实例的守卫中调用传递给 next 的回调。