原文
(1)vuex中数据存储在内存中,刷新后失效需要重新获取。因此会出现动态页面失效问题。我们需要根据是否为刷新页面来重新加载即可。
(2)进入动态加载的页面,然后再刷新,也会出现上面的情况
解决方法
netRoutes是全局路由列表 generateRoutes是获取路由列表接口数据方法,return返回路由表,所以我直接接收了
在router的全局导航守卫beforeEach中设置,根据vuex中是否有list 来判断是否为刷新页面,如果有那么是第一次登陆, 如果没有,那么就为刷新页面,需要重新执行即可。
if (store.state.permission.netRoutes.length === 0) {
const accessRoutes = await store.dispatch("permission/generateRoutes");
accessRoutes.forEach(el => {
router.addRoute("Home", el);
});
console.log(accessRoutes);
} else {
console.log(6);
next();
}