Vue - 在初始路由之前检查 localStorage(用于令牌)
Vue - check localStorage before initial route (for token)
我有一个 Vue 应用程序,它对应用程序负载执行一些 localStorage 和服务器检查,以确定最初将用户路由到哪里。
这是在应用程序的主要入口组件中,在 created() 挂钩中
我的问题是默认/路由的组件首先明显加载,然后是服务器调用,一切都会导致用户路由到他们正确的位置
如何延迟初始组件的呈现,直到我的应用程序的主要组件 created() 方法完成,然后有目的地将用户导航到正确的路线?
编辑: 我刚刚看到您使用了 created
方法...如下所述,使用 beforeRouteEnter
代替 next()
参数它提供
首先,我不建议使用延迟,而是建议使用一个变量来跟踪 API 调用是否完成。您可以使用安装方法实现此目的:
data() {
return {
loaded: false,
}
}
async mounted() {
await yourAPICALL()
if (checkIfTokenIsOkay) {
return this.loaded = true;
}
// do something here when token is false
}
现在在您的 html 中仅在加载时显示它 true:
<div v-if="loaded">
// html
</div>
更好的方法是使用 beforeRouteEnter
方法,它允许您甚至不加载页面而不是不显示它:https://router.vuejs.org/guide/advanced/navigation-guards.html
我以前遇到过这个问题,我坚信您必须拥有路由和路由器配置的初始文件。
在配置中,你可以在每条路由之前和 next()
处理权限和路由器。在路由器文件中,您可以设置参数并在 index.js 文件(路由器配置)
中检查它们
您还可以在 Router.beforeeach
中使用您的 localStorage 数据
我有一个 Vue 应用程序,它对应用程序负载执行一些 localStorage 和服务器检查,以确定最初将用户路由到哪里。
这是在应用程序的主要入口组件中,在 created() 挂钩中
我的问题是默认/路由的组件首先明显加载,然后是服务器调用,一切都会导致用户路由到他们正确的位置
如何延迟初始组件的呈现,直到我的应用程序的主要组件 created() 方法完成,然后有目的地将用户导航到正确的路线?
编辑: 我刚刚看到您使用了 created
方法...如下所述,使用 beforeRouteEnter
代替 next()
参数它提供
首先,我不建议使用延迟,而是建议使用一个变量来跟踪 API 调用是否完成。您可以使用安装方法实现此目的:
data() {
return {
loaded: false,
}
}
async mounted() {
await yourAPICALL()
if (checkIfTokenIsOkay) {
return this.loaded = true;
}
// do something here when token is false
}
现在在您的 html 中仅在加载时显示它 true:
<div v-if="loaded">
// html
</div>
更好的方法是使用 beforeRouteEnter
方法,它允许您甚至不加载页面而不是不显示它:https://router.vuejs.org/guide/advanced/navigation-guards.html
我以前遇到过这个问题,我坚信您必须拥有路由和路由器配置的初始文件。
在配置中,你可以在每条路由之前和 next()
处理权限和路由器。在路由器文件中,您可以设置参数并在 index.js 文件(路由器配置)
您还可以在 Router.beforeeach