基于vue 动态菜单 刷新空白问题的解决


Posted in Javascript onAugust 06, 2020

1.先确认自己在route.js 或者 main.js 中有没有使用 路由守卫vue.beforeEach和vue.addRouters() 促使页面每次刷新,重新根据后台返回数据生成动态路由,就像你在登陆时做的事情一样。

代码示范注意点:

//注意:确定自己避免了路由守卫进入死循环
let oneRun = true; //通过oneRun变量控制 避免陷入死循环
router.beforeEach((to,from,next)=>{
  if(oneRun){
    oneRun = false;//必须在creatNewRouter() 执行
    createNewRouter();
    next({...to, replace: true})// 必不可少的,确保你的动态路由创建成功再去执行其它代码
  }
})
 
function createNewRouter(){
  //请在这里做你登陆之后所做的创建动态路由的事情 一模一样去做。
  //不要用缓存,session或localstorage 否则会报错。你需要重新发出请求 登陆怎么做的 这里就怎么做的
};

2. 如果你发现刷新之后成功了但回退发生了问题 请把路由模式切换成 history vue-route 默认使用hash模式。也就是地址上出现眨眼的 /#/ 当然 history模式本体跑没问题 发包后 需要后端配置 后端配置指导链接 把链接复制发2给后端同学即可。

3. 如果你想了解更多

1.为什么 用了缓存会失败? 这是因为当你存入缓存时候用了JSON.stringify 这东西 会改变 compoent对象 让它少了一个 render函数。这里你可以打印出来你缓存之后 又解析 出来的路由 比对一下 而 addRouters()要求它接受的数组参数必须严格符合路由规则。

2.next({...to, replace: true}) 为什么必不可少呢? 在hash模式下 你的动态路由可能还没创建完成就 跑其它代码了 毕竟 路由守卫是异步操作 在history模式下 可能没有这个问题 未实测 写上最好。

3.每次刷新发请求拿路由不合适?

继续缓存,但从缓存取出来路由之后,复写路由里面所有的compoent对象。复写方法很多,如递归遍历路由。然后 item.compoent = vueName; vueName也就是你导出来的vue文件变量。

补充知识:VUE 动态注入路由白屏,再次刷新才显示页面问题

问题描述:

由于系统需要动态注入路由,刚开始在路由拦截里面根据账号权限动态获取路由,然后注入到本地路由中,代码如下:

// 尝试获取本地 store 用户信息中权限字段
const hasRoles = store.getters.roles && store.getters.roles.length > 0
if (hasRoles) {
 next()
} else {
 try {
  // 用token换取用户信息
  store.dispatch('user/getInfo').then(roles => {
   if (!roles) new Error('roles error!')
   // 根据获取的用户权限映射对应的路由信息
   store.dispatch('permission/generateRoutes', roles).then(accessRoutes => {
    if (!accessRoutes) new Error('accessRoutes error!')
    // 动态加入路由
    router.addRoutes(accessRoutes)
    // 确保路由完整性,设置replace 为true 这样导航就不会留下历史记录。
    next({
     ...to,
     replace: true
    })
   })
  })
 } catch (error) {
  // 删除本地token 并且重新登陆
  await store.dispatch('user/resetToken')
  Message.error(error || 'Has Error')
  next(`/login?redirect=${to.path}`)
  NProgress.done()
 }
}

这样写只有在登陆之后刷新页面才会动态注入,解决办法就是在登陆之后执行一下 红色字体部分代码

以上这篇基于vue 动态菜单 刷新空白问题的解决就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Jvascript学习实践案例(开发常用)
Jun 25 Javascript
jquerymobile局部渲染的各种刷新方法小结
Mar 05 Javascript
JS跨域问题详解
Nov 25 Javascript
JavaScript简单表格编辑功能实现方法
Apr 16 Javascript
jQuery实现连续动画效果实例分析
Oct 09 Javascript
学习JavaScript设计模式之迭代器模式
Jan 19 Javascript
js中new一个对象的过程
Feb 20 Javascript
mac上node.js环境的安装测试
Jul 03 Javascript
Vue Transition实现类原生组件跳转过渡动画的示例
Aug 19 Javascript
详解Vue-cli中的静态资源管理(src/assets和static/的区别)
Jun 19 Javascript
Vue封装的组件全局注册并引用
Jul 24 Javascript
浅谈layui 数据表格前后台传值的问题
Sep 12 Javascript
基于JavaScript的数据结构队列动画实现示例解析
Aug 06 #Javascript
解决vue动态下拉菜单 有数据未反应的问题
Aug 06 #Javascript
JavaScript中ES6规范中let和const的用法和区别
Aug 06 #Javascript
在vue项目中利用popstate处理页面返回的操作介绍
Aug 06 #Javascript
JavaScript中作用域链的概念及用途讲解
Aug 06 #Javascript
解决vue字符串换行问题(绝对管用)
Aug 06 #Javascript
vue 路由缓存 路由嵌套 路由守卫 监听物理返回操作
Aug 06 #Javascript
You might like
php获取某个目录大小的代码
2008/09/10 PHP
php反弹shell实现代码
2009/04/22 PHP
PHP常用正则表达式精选(推荐)
2019/05/28 PHP
php设计模式之策略模式应用案例详解
2019/06/17 PHP
JavaScript内核之基本概念
2011/10/21 Javascript
jquery组件使用中遇到的问题整理及解决
2014/02/21 Javascript
JavaScript函数参数使用带参数名的方式赋值传入的方法
2015/03/19 Javascript
多种jQuery绑定事件的实现方式
2016/06/13 Javascript
javascript淘宝主图放大镜功能
2016/10/20 Javascript
JSONP基础知识详解
2017/03/19 Javascript
Vue2.x中的父子组件相互通信的实现方法
2017/05/02 Javascript
vue router仿天猫底部导航栏功能
2017/10/18 Javascript
angularJs中$http获取后台数据的实例讲解
2018/08/08 Javascript
jQuery pjax 应用简单示例
2018/09/20 jQuery
微信小程序网络请求实现过程解析
2019/11/06 Javascript
javascript的hashCode函数实现代码小结
2020/08/11 Javascript
[01:00:22]DOTA2-DPC中国联赛定级赛 LBZS vs Magma BO3第三场 1月10日
2021/03/11 DOTA
浅谈Python peewee 使用经验
2017/10/20 Python
Python异常处理操作实例详解
2018/05/10 Python
基于python if 判断选择结构的实例详解
2019/05/06 Python
使用python实现时间序列白噪声检验方式
2020/06/03 Python
详解pandas apply 并行处理的几种方法
2021/02/24 Python
如何用 Python 制作一个迷宫游戏
2021/02/25 Python
HTML5离线缓存在tomcat下部署可实现图片flash等离线浏览
2012/12/13 HTML / CSS
斯凯奇新西兰官网:SKECHERS新西兰
2018/02/22 全球购物
摩飞电器俄罗斯官方网站:Morphy Richards俄罗斯
2020/07/30 全球购物
台湾屈臣氏网路商店:Watsons台湾
2020/12/29 全球购物
高中美术教学反思
2014/01/19 职场文书
学校对教师的评语
2014/04/28 职场文书
孝敬父母的活动方案
2014/08/28 职场文书
cf战队宣传语
2015/07/13 职场文书
党员读书活动心得体会
2016/01/14 职场文书
青少年法制教育心得体会
2016/01/14 职场文书
python3实现常见的排序算法(示例代码)
2021/07/04 Python
Java8 CompletableFuture 异步回调
2022/04/28 Java/Android
MySQL 原理与优化之Limit 查询优化
2022/08/14 MySQL