如何解决错误"no-param-reassign": [2, {"props": false}]"
这是我遇到Eslint错误的示例:
filtersList.forEach((filter) => {
if (filter.title === 'Timeframe') {
filter.options.forEach((obj) => {
obj.selected = false;
});
}
});
如何解决此问题?
答案 0 :(得分:1)
您现有的代码会使参数数组中的对象发生变异,这会导致linter错误。禁用该行的linter规则,或者创建新对象而不是进行变异,例如:
const changedFilters = filtersList.map((filter) => {
if (filter.title !== 'Timeframe') {
// you can clone the object here too, if you want
return filter;
}
return {
...filter,
options: filter.options.map((obj) => ({
...obj,
selected: false
}))
};
});
然后在代码中稍后使用changedFilters
变量。这样可以确保没有任何变异。
答案 1 :(得分:1)
基本上,您正在使用filterList
来修改forEach
,请改用map
:
filtersList.map(filter => {
if (filter.title === "Timeframe") {
return {
...filter,
options: filter.options.map(obj => ({ ...obj, selected: false }))
};
}
return filter;
});