动态添加路由后刷新页面为何会出现白屏现象?

2026-04-11 06:001阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计327个文字,预计阅读时间需要2分钟。

动态添加路由后刷新页面为何会出现白屏现象?

出现白屏的原因可能是:刷新页面时,Vue 会重新实例化,同时进行路由拦截,如果尚未执行路由添加,则地址栏的加载会很快,但无法找到对应路径,从而导致白屏。

出现白屏的原因:刷新页面的时候,vue会重新实例化,并且进行路由拦截,还没执行路由添加,路由还没添加进去,地址栏加载快于路由的添加,所以就会找不到这个路径,所以就会白屏,运用路由拦截器解决

// 记录路由 let hasRoles = true // 白名单(不需要登录就可以访问的名单) const whiteList = ['/login'] router.beforeEach(async (to, from, next) => { //获取token let token = store.state.user.token //判断是否登录 if (token) { //如果等录还去登录页,直接返回首页 if (to.path === '/login') { next({ path: '/' }) } else { //调用获取信息的action,重新获取动态路由 await store.dispatch('user/getInfo') //拿到动态添加的路由 let routes = store.state.user.resultAllRputes if (hasRoles) { //重新添加动态路由 router.addRoutes(routes) hasRoles = false next({ ...to, replace: true }) } else { next() } } } else { //如果没有登录,如果要去登录页,直接放行 if (whiteList.includes(to.path)) { next() } else { next(`/login`) } } })

动态添加路由后刷新页面为何会出现白屏现象?

本文共计327个文字,预计阅读时间需要2分钟。

动态添加路由后刷新页面为何会出现白屏现象?

出现白屏的原因可能是:刷新页面时,Vue 会重新实例化,同时进行路由拦截,如果尚未执行路由添加,则地址栏的加载会很快,但无法找到对应路径,从而导致白屏。

出现白屏的原因:刷新页面的时候,vue会重新实例化,并且进行路由拦截,还没执行路由添加,路由还没添加进去,地址栏加载快于路由的添加,所以就会找不到这个路径,所以就会白屏,运用路由拦截器解决

// 记录路由 let hasRoles = true // 白名单(不需要登录就可以访问的名单) const whiteList = ['/login'] router.beforeEach(async (to, from, next) => { //获取token let token = store.state.user.token //判断是否登录 if (token) { //如果等录还去登录页,直接返回首页 if (to.path === '/login') { next({ path: '/' }) } else { //调用获取信息的action,重新获取动态路由 await store.dispatch('user/getInfo') //拿到动态添加的路由 let routes = store.state.user.resultAllRputes if (hasRoles) { //重新添加动态路由 router.addRoutes(routes) hasRoles = false next({ ...to, replace: true }) } else { next() } } } else { //如果没有登录,如果要去登录页,直接放行 if (whiteList.includes(to.path)) { next() } else { next(`/login`) } } })

动态添加路由后刷新页面为何会出现白屏现象?