不关闭ESLint如何解决React中no-unused-expressions报错问题?
报错根因
- 触发
no-unused-expressionsESLint规则的核心原因是代码中把三元运算符作为独立语句使用,没有对它的返回值做赋值、返回、传参等任何操作,ESLint判定该表达式为无意义的无效代码。 - 额外优化提示:最初使用
map的版本存在API误用问题,map设计用来生成新数组,单纯遍历操作建议使用forEach或者更合适的数组聚合方法。
修复方案
方案1:替换三元运算为if分支(最易读)
直接把三元的判断逻辑改为标准if流程控制语句,if属于语句而非表达式,不会触发校验规则:
const allConcat = (listOfObj) => { let stringConcat = ''; Object.keys(listOfObj).forEach(item => { if (listOfObj[item] === 1) { stringConcat += item } }); return stringConcat }
方案2:使用reduce聚合结果(最优写法)
不需要声明外部可变变量,三元运算的结果直接作为reduce的返回值被消费,完全符合ESLint规则,逻辑更简洁:
const allConcat = (listOfObj) => { return Object.keys(listOfObj).reduce((concatStr, item) => listOfObj[item] === 1 ? concatStr + item : concatStr, '') }
两种方案都不需要修改或关闭ESLint规则,也能正常实现原有功能。
内容的提问来源于stack exchange,提问作者Kevin Wu
相关产品推荐
相关产品推荐

