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 相关文章推荐
从盛大通行证上摘下来的身份证验证js代码
Jan 11 Javascript
打开新窗口关闭当前页面不弹出关闭提示js代码
Mar 18 Javascript
js实现全屏漂浮广告移入光标停止移动
Dec 02 Javascript
javascript中的nextSibling使用陷(da)阱(keng)
May 05 Javascript
详解Webstorm 新建.vue文件支持高亮vue语法和es6语法
Oct 26 Javascript
JavaScript常用截取字符串的三种方式用法区别实例解析
May 15 Javascript
深入剖析Node.js cluster模块
May 23 Javascript
详解vue中使用protobuf踩坑记
May 07 Javascript
Openlayers显示瓦片网格信息的方法
Sep 28 Javascript
解决antd 表单设置默认值initialValue后验证失效的问题
Nov 02 Javascript
vue完美实现el-table列宽自适应
May 08 Vue.js
uniapp 微信小程序 自定义tabBar 导航
Apr 22 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
星际争霸中的对战模式介绍
2020/03/04 星际争霸
Thinkphp模板中使用自定义函数的方法
2012/09/23 PHP
php模拟js函数unescape的函数代码
2012/10/20 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(七)
2014/06/23 PHP
Yii2框架dropDownList下拉菜单用法实例分析
2016/07/18 PHP
PHP中串行化用法示例
2016/11/16 PHP
Yii2数据库操作常用方法小结
2017/05/04 PHP
利用google提供的API(JavaScript接口)获取网站访问者IP地理位置的代码详解
2010/07/24 Javascript
js编码之encodeURIComponent使用介绍(asp,php)
2012/03/01 Javascript
一行代码实现纯数据json对象的深度克隆实现思路
2013/01/09 Javascript
jquery垂直公告滚动实现代码
2013/12/08 Javascript
原生js和jQuery随意改变div属性style的名称和值
2014/10/22 Javascript
JavaScript学习笔记之JS对象
2015/01/22 Javascript
javascript实现的网站访问量统计代码
2015/12/20 Javascript
javascript实现下雪效果【实例代码】
2016/05/03 Javascript
ES6所改良的javascript“缺陷”问题
2016/08/23 Javascript
微信小程序 扎金花简单实例
2017/02/21 Javascript
浅谈ES6新增的数组方法和对象
2017/08/08 Javascript
js实现各浏览器全屏代码实例
2018/07/03 Javascript
原生JS实现DOM加载完成马上执行JS代码的方法
2018/09/07 Javascript
基于React Native 0.52实现轮播图效果
2020/08/25 Javascript
Node.js Windows Binary二进制文件安装方法
2019/05/16 Javascript
微信小程序request请求封装,验签代码实例
2019/12/04 Javascript
Windows8下安装Python的BeautifulSoup
2015/01/22 Python
python字符串常用方法
2018/06/14 Python
Python学习笔记之装饰器
2020/08/06 Python
会计系毕业个人自荐信格式
2013/09/23 职场文书
优秀毕业生推荐信
2013/11/02 职场文书
社区八一活动方案
2014/02/03 职场文书
财务部经理岗位职责
2014/02/03 职场文书
读书月活动方案
2014/05/22 职场文书
公司年终奖分配方案
2014/06/16 职场文书
领导班子对照检查材料
2014/09/22 职场文书
2014年银行客户经理工作总结
2014/11/12 职场文书
浅谈Python魔法方法
2021/06/28 Java/Android
Mysql中@和@@符号的详细使用指南
2022/06/05 MySQL