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实现顶一下,踩一下效果
Jul 17 Javascript
JavaScript给url网址进行encode编码的方法
Mar 18 Javascript
javascript创建cookie、读取cookie
Mar 31 Javascript
js数组操作方法总结(必看篇)
Nov 22 Javascript
Mobile Web开发基础之四--处理手机设备的横竖屏问题
Aug 11 Javascript
关于Vue单页面骨架屏实践记录
Dec 13 Javascript
redux-saga 初识和使用
Mar 10 Javascript
jQuery阻止事件冒泡实例分析
Jul 03 jQuery
JS将时间秒转换成天小时分钟秒的字符串
Jul 10 Javascript
JS简单表单验证功能完整示例
Jan 26 Javascript
three.js 将图片马赛克化的示例代码
Jul 31 Javascript
idea编译器vue缩进报错问题场景分析
Jul 04 Vue.js
解决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加密解密示例分享
2014/01/29 PHP
PHP实现更新中间关联表数据的两种方法
2014/09/01 PHP
清除网页历史记录,屏蔽后退按钮!
2008/12/22 Javascript
JSONP 跨域访问代理API-yahooapis实现代码
2012/12/02 Javascript
jQuery动态添加删除select项(实现代码)
2013/09/03 Javascript
一个获取第n个元素节点的js函数
2014/09/02 Javascript
纯JS实现表单验证实例
2016/12/24 Javascript
详解在Node.js中发起HTTP请求的5种方法
2019/01/10 Javascript
详解JQuery基础动画操作
2019/04/12 jQuery
Vue动态生成表格的行和列
2019/07/18 Javascript
Layui数据表格跳转到指定页的实现方法
2019/09/05 Javascript
小程序如何支持使用 async/await详解
2019/09/12 Javascript
JavaScript 绘制饼图的示例
2021/02/19 Javascript
Python的函数的一些高阶特性
2015/04/27 Python
编写Python小程序来统计测试脚本的关键字
2016/03/12 Python
详解Python命令行解析工具Argparse
2016/04/20 Python
深入了解Python中pop和remove的使用方法
2018/01/09 Python
Python实现注册、登录小程序功能
2018/09/21 Python
Python 实现数据结构中的的栈队列
2019/05/16 Python
使用python批量修改文件名的方法(视频合并时)
2020/03/24 Python
python类的实例化问题解决
2019/08/31 Python
Python 调用有道翻译接口实现翻译
2020/03/02 Python
Python实现快速大文件比较代码解析
2020/09/04 Python
你的自行车健身专家:FaFit24
2016/11/16 全球购物
美国羊皮公司:Overland
2018/01/15 全球购物
土建资料员岗位职责
2014/01/04 职场文书
鲜花方阵解说词
2014/02/13 职场文书
六查六看剖析材料
2014/02/15 职场文书
《学会待客》教学反思
2014/02/22 职场文书
土木工程求职信
2014/05/29 职场文书
学习走群众路线心得体会
2014/11/05 职场文书
幼儿园卫生保健制度
2015/08/05 职场文书
五一放假通知怎么写
2015/08/18 职场文书
浅谈Python基础之列表那些事儿
2021/05/11 Python
python基础之函数的定义和调用
2021/10/24 Python
windows10 家庭版下FTP服务器搭建教程
2022/08/05 Servers