vue 解决addRoutes多次添加路由重复的操作


Posted in Javascript onAugust 04, 2020

我就废话不多说了,大家还是直接看代码吧~

import Vue from 'vue'
import Router from 'vue-router'
Vue.use(Router)

const createRouter = () => new Router({
 mode: 'history',
 routes: []
})

const router = createRouter()

export function resetRouter () {
 const newRouter = createRouter()
 router.matcher = newRouter.matcher // the relevant part
}

export default router

找老外的文档解决的问题,在登出的模块调用resetRouter方法,把原来的路由替换。

补充知识:vue中 做权限管理 使用router.addRoutes()动态添加路由以及解决刷新失效,跳转后刷新失效问题

最近在公司做知识储备,有个权限的问题干扰了我2天,今天终于把他理顺了!!!

一、需求明确

我想做的是后台管理系统的权限管理,(所有的数据都是使用mockJs模拟得来),登录的时候,发送表单验证,验证成功后,后台返回权限列表,权限不同,返回的列表不同,拿到权限列表后,把权限列表渲染出来在页面侧边栏上。

二、注意点

(1) 前端提前设置静态的权限列表,通常只包括页面公共的部分,比如 login。

(2)前端提前定义所有的权限列表,将其定义为一个数组,该数组中包含所有的权限。

(3)后台返回的数据是该用户拥有的所有权限列表,一般写成路由形式,但只包含name即可,如:

{
  "code": 0,
  "message": "获取权限成功",
  "data": [
    {
      "name": "订单管理",
      "children": [
        {
          "name": "订单列表"
        },
        {
          "name": "生产管理",
          "children": [
            {
              "name": "生产列表"
            }           
          ]
        },
        {
          "name": "退货管理"
        }
      ]
    }
  ]
}

三、思路与实现

(1)当用户点击登录的时候,验证成功后,可以获取当前用户的id(token)存储到sessionStorage中。

(2)根据 '后台返回的权限列表(getList)',去比对 '我们提前定义好的权限列表(powerList)',然后得出 '应该动态添加的权限列表(list)' ,并存放到vuex中,最后执行addRoutes把比对出来的权限路由列表动态添加到路由中即可。

(3)进入home页面,渲染侧边栏。

四、问题

(1)vuex中数据存储在内存中,刷新后失效需要重新获取。因此会出现动态页面失效问题。我们需要根据是否为刷新页面来重新加载即可。

(2)进入动态加载的页面,然后再刷新,也会出现上面的情况

五、解决方法

在router的全局导航守卫beforeEach中设置,根据vuex中是否有list 来判断是否为刷新页面,如果有那么是第一次登陆, 如果没有,那么就为刷新页面,需要重新执行即可。

vue 解决addRoutes多次添加路由重复的操作

getRoutes就是执行路由对比,然后执行addRoutes的函数,因为其中有获取后台的路由列表这一步,为异步操作,所以应该放在action中

以上这篇vue 解决addRoutes多次添加路由重复的操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
关于extjs4如何获取grid修改后的数据的问题
Aug 07 Javascript
extjs中form与grid交互数据(record)的方法
Aug 29 Javascript
Js判断参数(String,Array,Object)是否为undefined或者值为空
Nov 04 Javascript
JavaScript实现三阶幻方算法谜题解答
Dec 29 Javascript
node爬取微博的数据的简单封装库nodeweibo使用指南
Jan 02 Javascript
JS实现的简单鼠标跟随DiV层效果完整实例
Oct 31 Javascript
Node.js中如何合并两个复杂对象详解
Dec 31 Javascript
微信小程序 特效菜单抽屉效果实例代码
Jan 11 Javascript
深入浅析js原型链和vue构造函数
Oct 25 Javascript
js判断复选框是否选中的方法示例【基于jQuery】
Oct 10 jQuery
9种方法优化jQuery代码详解
Feb 04 jQuery
微信小程序实现单个或多个倒计时功能
Nov 01 Javascript
Vue优化:常见会导致内存泄漏问题及优化详解
Aug 04 #Javascript
Jquery cookie插件实现原理代码解析
Aug 04 #jQuery
解决vue自定义指令导致的内存泄漏问题
Aug 04 #Javascript
vue中的v-model原理,与组件自定义v-model详解
Aug 04 #Javascript
详解JS深拷贝与浅拷贝
Aug 04 #Javascript
vue addRoutes路由动态加载操作
Aug 04 #Javascript
vue+element使用动态加载路由方式实现三级菜单页面显示的操作
Aug 04 #Javascript
You might like
PHP中文件上传的一个问题
2010/09/04 PHP
简单的PHP缓存设计实现代码
2011/09/30 PHP
CentOS 6.3下安装PHP xcache扩展模块笔记
2014/09/10 PHP
利用PHP访问带有密码的Redis方法示例
2017/02/09 PHP
laravel model模型定义实现开启自动管理时间created_at,updated_at
2019/10/17 PHP
document.documentElement && document.documentElement.scrollTop
2007/12/01 Javascript
javascript 不间断的图片滚动并可点击
2010/01/15 Javascript
你必须知道的JavaScript 中字符串连接的性能的一些问题
2013/05/07 Javascript
根据身份证号自动输出相关信息(籍贯,出身日期,性别)
2013/11/15 Javascript
node.js中的events.emitter.removeAllListeners方法使用说明
2014/12/10 Javascript
超实用的javascript时间处理总结
2016/08/16 Javascript
ES6中Generator与异步操作实例分析
2017/03/31 Javascript
switchery按钮的使用方法
2017/12/18 Javascript
浅析Vue 和微信小程序的区别、比较
2018/08/03 Javascript
React注册倒计时功能的实现
2018/09/06 Javascript
原生JS实现自定义下拉单选选择框功能
2018/10/12 Javascript
vuex+axios+element-ui实现页面请求loading操作示例
2020/02/02 Javascript
[56:18]VGJ.S vs Secret 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
[07:54]DOTA2-DPC中国联赛 正赛 iG vs VG 选手采访
2021/03/11 DOTA
在RedHat系Linux上部署Python的Celery框架的教程
2015/04/07 Python
python通过邮件服务器端口发送邮件的方法
2015/04/30 Python
用python给自己做一款小说阅读器过程详解
2019/07/11 Python
利用Python代码实现一键抠背景功能
2019/12/29 Python
pytorch 指定gpu训练与多gpu并行训练示例
2019/12/31 Python
python GUI库图形界面开发之PyQt5线程类QThread详细使用方法
2020/02/26 Python
解决Python图形界面中设置尺寸的问题
2020/03/05 Python
python 如何实现遗传算法
2020/09/22 Python
html5定位并在百度地图上显示的示例
2014/04/27 HTML / CSS
HTML5获取当前地理位置并在百度地图上展示的实例
2020/07/10 HTML / CSS
Nike法国官方网站:Nike.com FR
2018/07/22 全球购物
英国奢华护肤、美容和Spa品牌:Temple Spa
2019/11/02 全球购物
初三班主任寄语大全
2014/04/04 职场文书
2015庆祝七一建党节94周年活动总结
2015/03/20 职场文书
上班迟到检讨书
2015/05/06 职场文书
2016年小学优秀班主任事迹材料
2016/02/29 职场文书
Win11远程连接不上怎么办?Win11远程桌面用不了的解决方法
2022/08/05 数码科技