前端项目开发踩坑02————Vue-Router 栈溢出报错

提示:
本文为js栏目:前端项目开发踩坑02————Vue


前言

现在的CMS后台项目中流行使用动态路由加载。即通过后端保存当前用户的路有权限,在页面加载时通过获取该用户的路由列表,动态渲染加载至页面中。而非在项目开发阶段,使用静态文件编辑路由列表,同时加载到项目中。(router.js)

第一次接触这样的写法,遇到了许许多多奇奇怪怪且不好排除的bug。

其中最经典的报错就是:
Error in render: “RangeError: Maximum call stack size exceeded”
在这里插入图片描述
真恶心啊,这个bug。因为根本想不到到底是哪里出问题了。


提示:以下是本篇文章正文内容,下面成功案例可供参考 以Vue + Vue-Router + element ui 为例

element UI的router-link组件指向未加载路由

先放解决方案。将所有router-link组件全部改成,利用事件调用函数跳转。
如:

<router-link to="/changePassWord">
  <el-dropdown-item>修改密码</el-dropdown-item>
</router-link>

改成:
Vue项目:

 <el-dropdown-item @click.native="$router.push('/changePassWord')">修改密码</el-dropdown-item>

动态路由加载函数出错

动态路由加载函数中一般先同步获取该用户的路有权限,可以是从浏览器本地缓存中获取,可以是从后端获取。

但是通常获取的路由权限可能是多级数组。

位次你讲深度遍历该数组,切记检查你的函数写法,代码中不要出现死循环。

未配置即将跳转的路由

你在路由器前置守卫的处理中,可能对即将跳转的路由进行重定向。

例如,当欲访问页面不存在时,跳转404页面。

当当前用户没有权限时,跳转401页面。

当router捕获不到重定向页面时就会报错。

所以除了动态路由获取以外,你还需要讲一些必然存在的路由,进行静态处理,router.js

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值