使用 beforeEnter 传递数据来路由组件 [英] Pass data with beforeEnter to route components

查看:62
本文介绍了使用 beforeEnter 传递数据来路由组件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我将如何让使用 beforeEnter 调用的函数将数据传递给相应的路由组件?

在这种情况下,beforeEnter 的目的是确认一个有效的不记名令牌作为 cookie 存在.

目前,我有 beforeEnter/verify/auth 上点击 aws api 网关,然后组件加载并调用 /list/上的 dynamodb回购.问题是,两条路由都受到内置 AWS api gatewayV2 JWT 授权器的保护,因此点击 /verify/auth 是毫无意义的.

我想要的是让 beforeEnter 点击 /list/repos,利用内置的 JWT 授权器,并使用从 api 获取的数据加载下一页称呼.如果用户未正确验证,beforeEnter 不会将用户发送到路由.

所以:

  • api 调用 ->加载页面

而不是

  • api 调用 ->加载页面 ->api调用

这是我的代码.我在这里查看了一个类似的问题,但无法弄清楚.将数据传递给路由的组件beforeEnter

index.js

let repositories = [];异步函数 listRepositories(to, from, next) {var isAuthenticated = false;console.log(测试列表存储库...");如果(Vue.$cookies.get(授权")){尝试 {const 响应 = 等待获取(process.env.VUE_APP_API_GATEWAY_ENDPOINT + "/list/repos",{方法:POST",正文:'{repo_owner":sean"}',标题:{授权:Vue.$cookies.get("Authorization")}});存储库 = 等待 response.json();控制台日志(存储库);如果(repositories.message !=未授权"){isAuthenticated = true;//返回 {//存储库//};下一个();}} 捕捉(错误){控制台错误(错误);}}如果 (!isAuthenticated) {console.log(错误未验证");到(/");}}const 路由 = [{路径:/",名称:登录",组件:() =>导入(../views/Login.vue")},{路径:/回购",名称:回购",//beforeEnter: isAuthenticated,beforeEnter:listRepositories,道具:存储库 =>{{存储库;}},组件:() =>导入(../views/Repos.vue")}];

./views/Repos.vue