1.vuex触发action报错的问题,报错如下:
意思是定义的action方法SetToken找不到。
解决办法:
在方法前面加上模块名称user,你这个方法定义在哪个模块下面就加上哪个模块名称
this.$store.dispatch('user/SetToken', res.data.authorization)
2.路由跳转重复报警告的问题:报警告如下:
意思是重复命名的路由定义, 我们在添加路由信息中存在重复添加,在路由守卫中addRouter方法前面删除原来路由即可
解决办法:
const createRouter = () => new Router({
// mode: 'history', // require service support
scrollBehavior: () => ({ y: 0 }),
routes: constantRoutes
})
const router = createRouter()
export function resetRouter() {
const newRouter = createRouter()
router.matcher = newRouter.matcher // reset router
}
调用:
路由守卫函数中,添加动态路由之前:
// 删除原来路由
resetRouter()
// 增加异步路由
router.addRoutes(accessRoutes)
3.iview的侧边栏菜单,每次点击二级菜单时,子菜单会自动关闭,这不是我们想要的
解决办法:
绑定openNames处:
<Menu :active-name="activeName" :theme="themeType" width="auto" :class="menuitemClasses" :open-names="openNames" accordion ref="side_menu" @on-select="menuNav"
@on-open-change="open"
>
解决处:
在监听路由中不能每次都清空openNames数组
4.解决刷新浏览器,页面会自动跳转到404页面的问题
描述:在公共页面,不需要权限页面,刷新浏览器,页面不会跳转到404,在权限路由,动态加载的路由上,刷新浏览器,页面会自动跳转到404
可以从我们的代码看出:在公共路由上我们有一个公共路由不存在即跳转404页面的重定向:
把公共路由的这个404重定向去掉即可,因为在权限路由页面刷新浏览器,该路由在公共路由中不存在,肯定会跳转404页面,所以重定向404代码只能在动态权限路由中加载,而不能在公共路由重定向到404
5.数组去重
针对任意形式的一维数组去重,单个数据或者包含对象的数据
// 数组去重
getArray(a) {
var hash = {},
len = a.length,
result = []
for (var i = 0; i < len; i++) {
// 根据数组的唯一标识去重,不存在相同的key值
if (!hash[a[i].id]) {
hash[a[i].id] = true
result.push(a[i])
}
}
return result
},