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 相关文章推荐
基于jquery的滚动新闻列表
Jun 19 Javascript
javascript实现日期格式转换
Dec 16 Javascript
利用Angularjs和Bootstrap前端开发案例实战
Aug 27 Javascript
AngularJS实现网站换肤实例
Feb 19 Javascript
Vue2几种常见开局方式详解
Sep 09 Javascript
微信小程序实现传参数的几种方法示例
Jan 10 Javascript
Bootstrap实现可折叠分组侧边导航菜单
Mar 07 Javascript
利用jquery和BootStrap实现动态滚动条效果
Dec 03 jQuery
vue的三种图片引入方式代码实例
Nov 19 Javascript
微信小程序实现菜单左右联动
May 19 Javascript
vue-cli4使用全局less文件中的变量配置操作
Oct 21 Javascript
vue中div禁止点击事件的实现
Apr 02 Vue.js
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
Get或Post提交值的非法数据处理
2006/10/09 PHP
安装APACHE
2007/01/15 PHP
Laravel5.1 框架Middleware中间件基本用法实例分析
2020/01/04 PHP
jQuery Tools Dateinput使用介绍
2012/07/14 Javascript
用Jquery.load载入页面实现局部刷新
2014/01/22 Javascript
深入学习jQuery Validate表单验证
2016/01/18 Javascript
详解Jquery实现ready和bind事件
2016/04/14 Javascript
详解JavaScript中|单竖杠运算符的使用方法
2016/05/23 Javascript
jQuery学习心得总结(必看篇)
2016/06/10 Javascript
nodejs爬虫遇到的乱码问题汇总
2017/04/07 NodeJs
JS实现新建文件夹功能
2017/06/17 Javascript
JS中利用swiper实现3d翻转幻灯片实例代码
2017/08/25 Javascript
vue 简单自动补全的输入框的示例
2018/03/12 Javascript
详解JavaScript的BUG和错误
2018/05/07 Javascript
vue项目环境变量配置的实现方法
2018/10/12 Javascript
详解Vue中组件传值的多重实现方式
2019/08/16 Javascript
一步一步实现Vue的响应式(对象观测)
2019/09/02 Javascript
[02:15]2015国际邀请赛选手档案IG.Ferrari 430
2015/07/30 DOTA
Python中的一些陷阱与技巧小结
2015/07/10 Python
python 中split 和 strip的实例详解
2017/07/12 Python
Python中join函数简单代码示例
2018/01/09 Python
利用Python+Java调用Shell脚本时的死锁陷阱详解
2018/01/24 Python
python 绘制拟合曲线并加指定点标识的实现
2019/07/10 Python
Python实现栈的方法详解【基于数组和单链表两种方法】
2020/02/22 Python
Python实现进度条和时间预估的示例代码
2020/06/02 Python
CSS3实战第一波 让我们尽情的圆角吧
2010/08/27 HTML / CSS
H5 canvas中width、height和style的宽高区别详解
2018/11/02 HTML / CSS
华为俄罗斯官方网上商城:购买Huawei手机和平板
2017/04/21 全球购物
客服端调用EJB对象的几个基本步骤
2012/01/15 面试题
物业经理求职自我评价
2013/09/22 职场文书
党员公开承诺践诺书
2014/03/25 职场文书
党委干部批评与自我批评发言稿
2014/09/28 职场文书
2015年超市工作总结范文
2015/05/26 职场文书
公司员工培训管理制度
2015/08/04 职场文书
商务宴会祝酒词
2015/08/11 职场文书
2016年清明节红领巾广播稿
2015/12/17 职场文书