我有一个按钮,可以在Vue应用程序中触发路由更改。我希望按钮元素在组件的$route对象中作为";事件目标";路线更改的方式(类似于点击事件中的event.target(。
这可能吗?
如果没有,获取路线更改原因的最佳方法是什么?
您正在寻找导航卫士。有
- 每条路线上调用的全球导航卫士beforeEnter/resolve/leave/after取决于您的防护类型已使用
- 在您的路由器文件,在每个路由的声明中
- 在组件中组件内部使用的防护装置
您可以在组件内防护beforeRouteLeave(to, from)
中获取导致组件中路由更改的特定按钮。该特定防护装置可以访问具有所有道具和反应状态(包括按钮参考(的组件的this
。
根据文档,这就是每个警卫在导航动作流中的下落:
- 导航已触发
- 调用已停用组件中的
beforeRouteLeave
防护 - 呼叫全局
beforeEach
警卫 - 调用重用组件中的
beforeRouteUpdate
防护 - 在路由配置中调用
beforeEnter
- 解析异步路由组件
- 调用激活组件中的
beforeRouteEnter
- 呼叫全局
beforeResolve
警卫 - 导航已确认
- 调用全局
afterEach
钩子 - DOM更新已触发
- 在带有实例化实例的
beforeRouteEnter
防护程序中,调用回调传递给next