最近在做动态路由,遇到很多问题。刚才碰到个一直警告路由重复,但是事实上我的路由并没有重复的信息。
这个是我的首页,我一步一步追踪路由信息变化发现,因为这个首页是我的公共路由,加载时会重复加载。原因呢,很简单,router的原生addRoutes方法是添加路由信息。我在项目中把后端返回的动态路由是通过addRoutes添加的。但是我只添加每次加载时吃书画的公共路由信息都会存在,因此会出现重复的情况。我们只需要在添加路由前给路由信息删除了再去添加不就解决了吗:
router.$addRoutes = function(params) {
router.matcher = new Router({ mode: 'history' }).matcher;
router.addRoutes(params)
export default router
}
在router/index的路由文件中,给router对象中加上一个自定义的方法,在方法中先初始化路由信息,再去添加就可以啦
之后在我们的路由拦截中调用此方法替换addRoutes就OK了
routers.addRoutes(accessRoutes)
至此,问题解决