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 相关文章推荐
用javascript操作xml
Nov 04 Javascript
JS保存、读取、换行、转Json报错处理方法
Jun 14 Javascript
js替代copy(示例代码)
Nov 27 Javascript
JS实现统计复选框选中个数并提示确定与取消的方法
Jul 01 Javascript
jQuery实现类似标签风格的导航菜单效果代码
Aug 25 Javascript
第一次接触神奇的Bootstrap菜单和导航
Aug 01 Javascript
JS实现全屏的四种写法
Dec 30 Javascript
BootStrap导航栏问题记录
Jul 31 Javascript
简单实现jQuery轮播效果
Aug 18 jQuery
Vue的轮播图组件实现方法
Mar 03 Javascript
jQuery+PHP实现上传裁剪图片
Jun 29 jQuery
微信头像地址失效踩坑记附带解决方案
Sep 23 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
phpphp图片采集后按原路径保存图片示例
2014/02/18 PHP
PHP中file_exists函数不支持中文名的解决方法
2014/07/26 PHP
laravel 修改.htaccess文件 重定向public的解决方法
2019/10/12 PHP
javascript while语句和do while语句的区别分析
2007/12/08 Javascript
JavaScript Prototype对象
2009/01/07 Javascript
js+css使DIV始终居于屏幕中间 左下 左上 右上 右下的代码集合
2011/03/10 Javascript
jQuery Ajax请求状态管理器打包
2012/05/03 Javascript
商城常用滚动的焦点图效果代码简单实用
2013/03/28 Javascript
js实现的map方法示例代码
2014/01/13 Javascript
JavaScript中对循环语句的优化技巧深入探讨
2014/06/06 Javascript
深入浅析JavaScript中的作用域和上下文
2016/03/26 Javascript
javascript中利用柯里化函数实现bind方法【推荐】
2016/04/29 Javascript
浅谈jquery的map()和each()方法
2016/06/12 Javascript
jQuery通过ajax方法获取json数据不执行success的原因及解决方法
2016/10/15 Javascript
React进阶学习之组件的解耦之道
2017/08/07 Javascript
BootStrap Validator 根据条件在JS中添加或移除校验操作
2017/10/12 Javascript
jQuery实现验证表单密码一致性及正则表达式验证邮箱、手机号的方法
2017/12/05 jQuery
Vue 父子组件数据传递的四种方式( inheritAttrs + $attrs + $listeners)
2018/05/04 Javascript
浅析Vue.js中v-bind v-model的使用和区别
2018/12/04 Javascript
vue中filters 传入两个参数 / 使用两个filters的实现方法
2019/07/15 Javascript
Vue实现简易计算器
2020/02/25 Javascript
NetworkX之Prim算法(实例讲解)
2017/12/22 Python
pycharm+django创建一个搜索网页实例代码
2018/01/24 Python
Python多线程中阻塞(join)与锁(Lock)使用误区解析
2018/04/27 Python
Python开发虚拟环境使用virtualenvwrapper的搭建步骤教程图解
2018/09/19 Python
Django框架安装及项目创建过程解析
2020/09/14 Python
Waterford加拿大官方网站:世界著名的水晶杯品牌
2016/11/01 全球购物
Giglio美国站:意大利奢侈品购物网
2018/02/10 全球购物
Chicco婴儿用品美国官网:汽车座椅、婴儿推车、高脚椅等
2018/11/05 全球购物
企业为何需要商业计划书
2013/12/26 职场文书
八年级音乐教学反思
2014/01/09 职场文书
最美孝心少年事迹材料
2014/08/15 职场文书
学生无故旷课检讨书
2014/09/20 职场文书
第二批党的群众路线教育实践活动总结报告
2014/10/30 职场文书
初中美术教学反思
2016/02/17 职场文书
MySQL事务的ACID特性以及并发问题方案
2022/07/15 MySQL