动态路由更新后页面白屏现象如何解决?

更新于
2026-10-09 10:01:34
1阅读来源:SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计325个文字,预计阅读时间需要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`) } } })

本文共计325个文字,预计阅读时间需要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`) } } })