如何在设置挂钩中使用 beforeRouteEnter?

Posted

技术标签:

【中文标题】如何在设置挂钩中使用 beforeRouteEnter?【英文标题】:How to use beforeRouteEnter in setup hook? 【发布时间】:2021-06-03 12:09:14 【问题描述】:

如何在setup钩子中使用beforeRouteEnter

the documentation 中没有提到 onBeforeRouteEnter 挂钩。仅记录了两个钩子 onBeforeRouteLeaveonBeforeRouteUpdate

【问题讨论】:

【参考方案1】:

在组合API中,setup的时序大致等同于Vue 2中的created,此时路由已经发生,所以setup内部的beforeRouteEnter没有任何意义.

如果适合您,您仍然可以在选项 API 中使用 beforeRouteEntersetup

setup() 
  console.log('SETUP')
,
beforeRouteEnter(to, from, next) 
  // Do something
  next( path: '/foo' ); // Go somewhere else if necessary
  next();                 // Or stay here

或路由器中的beforeEnterbeforeEach 可能会满足您的目的:

【讨论】:

但是当我需要获取数据并且遇到错误停留在旧页面时该怎么办? 正如我所解释的,setup 无法访问该实例,因为它还不存在。你不能按照你的要求去做。以下是我已经列出的 5 个替代方案:1.beforeRouteEnter + Vuex,2.beforeEnter + Vuex,3.beforeEach + Vuex,4.在验证beforeRouteEnter 路由后获取setup 中的数据, 5.使用选项api 这是 internal 实例,而不是您使用console.log(this) 获得的组件实例。在完成setup 之前,该内部实例无法访问data。 jsfiddle.net/sh0ber/f62rjd3s 我建议研究控制台中的对象。我知道的唯一读物是docs 真可惜。无论如何,谢谢!

以上是关于如何在设置挂钩中使用 beforeRouteEnter?的主要内容,如果未能解决你的问题,请参考以下文章

如何更改状态挂钩中的多个键值?

如何在页面加载时设置 useState 挂钩的状态?

如何访问在另一个 js 文件中的反应挂钩中完成的状态值

while 循环在 useEffect 挂钩中不起作用

设置预提交挂钩 jshint

如何挂钩 iPad 弹出工具栏按钮的操作方法?