ES6中的一个小规范和Vue2+element ui 导航栏的一个小错误

        ES6箭头函数

        今天在给vuex中的mutations加逻辑的时候,遇到了一个小问题,使用es6新增的箭头函数的时候,由于我的函数逻辑只有一段代码,此时vscode自动帮我加了一对花括号,当时并没有怎么注意,但是控制台一直报错,并且我的导航栏也出了问题,大致问题如下

        

        这段代码的逻辑是,当我点击左侧的导航栏时,会查询我的列表数组中有没有这个点击的小模块的name值(该模块是对象的数组),通过findIndex返回,如果有则返回下标,如果无则返回-1,找不到就往我的列表数组中存入该对象,如果有则不再存入

导航栏此时出现的问题

        可以看出我们的面包屑是有问题的,并且通过此时打印的数组,可以发现该数组一直在存入相同的对象(属性和方法全部相同),此时也可以通过数组去重的方式去解决,但是在我们的逻辑里应该是可以一步到位的,数组去重会影响页面体验

        通过不断的在控制台打印,基本上确定了bug所在位置,于是我把上图中的花括号去掉去试,发现没有报错并且面包屑完整

        于是我前往es6的语法规范文档中寻找,发现这样一段话

//由于大括号被解释为代码块,所以如果箭头函数直接返回一个对象,必须在对象外面加上括号,否则会报错。
// 报错
let getTempItem = id => { id: id, name: "Temp" };
// 不报错
let getTempItem = id => ({ id: id, name: "Temp" });

        于是明白此时我的箭头函数返回的是一个对象,而我明显是想返回的是一个boolean值,此时将花括号去掉即可(此处看情况灵活运用)

        Vue2 + Element ui 的导航栏报错

        vue2 + element ui 中的导航栏会报错,但不会影响用户正常使用(但是我有强迫症哈哈哈)

 

        于是找寻了一下解决方法,解决方式是,在router(路由)文件下面添加下面这段代码,cv过去随便添加在哪一行都可以,但是一定要在路由文件夹下面的index.js中

// 解决element ui 中重复点击导航栏导致的报错
const originalPush = VueRouter.prototype.push
VueRouter.prototype.push = function push(location) {
    return originalPush.call(this, location).catch(err => err)
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值