vue 导航菜单刷新状态不消失,显示对应的路由界面操作


Posted in Javascript onAugust 06, 2020

使用vue element-ui框架构建公共导航栏(https://element.eleme.cn/#/zh-CN/component/menu)

按F5刷新就会返回默认定义的路由,使用 "$route.path" 刷新后还是在最新的一个路由:

<el-menu :default-active="$route.path"></el-menu>

vue 导航菜单刷新状态不消失,显示对应的路由界面操作

vue 导航菜单刷新状态不消失,显示对应的路由界面操作

补充知识:vue 动态菜单 刷新空白 解决方案

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 导航菜单刷新状态不消失,显示对应的路由界面操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery ajax,ashx,json的用法总结
Feb 12 Javascript
标题过长使用javascript按字节截取字符串
Apr 24 Javascript
jquery队列函数用法实例
Dec 16 Javascript
javascript进行四舍五入方法汇总
Dec 16 Javascript
javascript验证身份证号
Mar 03 Javascript
详解JavaScript基本类型和引用类型
Dec 09 Javascript
JavaScript学习笔记之ES6数组方法
Mar 25 Javascript
bootstrap table操作技巧分享
Feb 15 Javascript
JS实现仿饿了么在浏览器标签页失去焦点时网页Title改变
Jun 01 Javascript
利用JS实现一个同Excel表现的智能填充算法
Aug 13 Javascript
vue-cli构建vue项目的步骤详解
Jan 27 Javascript
JS数组去重详情
Nov 07 Javascript
解决vue-router路由拦截造成死循环问题
Aug 05 #Javascript
Vue基于iview table展示图片实现点击放大
Aug 05 #Javascript
vue相同路由跳转强制刷新该路由组件操作
Aug 05 #Javascript
解决vue路由name同名,路由重复的问题
Aug 05 #Javascript
解决vue项目input输入框双向绑定数据不实时生效问题
Aug 05 #Javascript
Vue 同步异步存值取值实现案例
Aug 05 #Javascript
详解vue路由
Aug 05 #Javascript
You might like
使用PHP模拟HTTP认证
2006/10/09 PHP
php session 错误
2009/05/21 PHP
PHP设置图片文件上传大小的具体实现方法
2013/10/11 PHP
PHP5.3以上版本安装ZendOptimizer扩展
2015/03/27 PHP
YII Framework框架教程之使用YIIC快速创建YII应用详解
2016/03/15 PHP
Smarty分页实现方法完整实例
2016/05/11 PHP
PHP实现自动识别原编码并对字符串进行编码转换的方法
2016/07/13 PHP
TextArea不支持maxlength的解决办法(jquery)
2011/09/13 Javascript
浅析return false的正确使用
2013/11/04 Javascript
vue 注册组件的使用详解
2018/05/05 Javascript
详解mpvue小程序中怎么引入iconfont字体图标
2018/10/01 Javascript
2019年度web前端面试题总结(主要为Vue面试题)
2020/01/12 Javascript
详细介绍Python中的偏函数
2015/04/27 Python
Python实现以时间换空间的缓存替换算法
2016/02/19 Python
Python实现计算圆周率π的值到任意位的方法示例
2018/05/08 Python
Python3.6基于正则实现的计算器示例【无优化简单注释版】
2018/06/14 Python
python全栈要学什么 python全栈学习路线
2019/06/28 Python
Python 类的魔法属性用法实例分析
2019/11/21 Python
Python实现获取当前目录下文件名代码详解
2020/03/10 Python
详解python os.path.exists判断文件或文件夹是否存在
2020/11/16 Python
Python类型转换的魔术方法详解
2020/12/23 Python
关于HTML5+ API plusready的兼容问题
2020/11/20 HTML / CSS
全球领先的在线cosplay服装商店:RoleCosplay
2020/01/18 全球购物
个人简历的自荐信
2013/10/23 职场文书
大学生就业自荐信
2013/10/26 职场文书
应届大学生求职的自我评价
2013/11/17 职场文书
行政人员岗位职责
2013/12/08 职场文书
超市5.1促销活动
2014/01/15 职场文书
工地宣传标语
2014/06/18 职场文书
2014年国庆晚会主持词
2014/09/19 职场文书
2014年检察院个人工作总结
2014/12/09 职场文书
2015年度个人教学工作总结
2015/05/20 职场文书
学生会宣传部竞选稿
2015/11/21 职场文书
Python编程根据字典列表相同键的值进行合并
2021/10/05 Python
python基础之类属性和实例属性
2021/10/24 Python
配置nginx负载均衡
2022/05/06 Servers