vue项目解决一些vuex和路由菜单报错的问题(vuex触发action方法报错问题,路由跳转重复,iview点击子菜单自动关闭一级菜单,刷新浏览器跳转404页面问题)

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
        },

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值