如何解决lint报错Assignment to property of function parameter 'item'
报错原因
这个报错是ESLint的no-param-reassign规则触发的,该规则禁止直接修改函数的入参,避免因为引用类型修改带来的意外全局副作用:你当前代码里的item是resp数组的子元素(引用类型数组),直接修改item[0]等价于直接修改原resp数组的内容,属于入参重赋值的违规场景。
解决方案
方案1:确定要修改原数组,仅消除lint报错
临时单行忽略
在修改入参的行前加单行忽略注释即可:
const resp = await getData(payload) resp.forEach((item) => { // eslint-disable-next-line no-param-reassign item[0] = moment(item[0]).format('DD/MMM/YY'); });
全局规则配置(项目统一允许修改入参属性)
在项目的ESLint配置文件(.eslintrc.js/.eslintrc.json等)中修改规则配置,关闭入参属性修改的校验:
{ "rules": { "no-param-reassign": ["error", { "props": false }] } }
方案2:遵循无副作用规范,不修改原数组
如果你不需要改动原resp数组,推荐用map生成新数组,完全避免修改入参,符合lint规则的设计初衷:
const resp = await getData(payload) const formattedResp = resp.map((item) => { // 拷贝原数组后再修改,不改动原入参 const newItem = [...item] newItem[0] = moment(newItem[0]).format('DD/MMM/YY') return newItem });
内容的提问来源于stack exchange,提问作者Giuseppe Fantoni
相关产品推荐
相关产品推荐

