如何修复“无参数重新分配”的错误?

时间:2019-07-25 10:16:08

标签: javascript eslint

如何解决错误"no-param-reassign": [2, {"props": false}]"

这是我遇到Eslint错误的示例:

 filtersList.forEach((filter) => {
      if (filter.title === 'Timeframe') {
        filter.options.forEach((obj) => {
          obj.selected = false;
        });
      }
    });

如何解决此问题?

2 个答案:

答案 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;
});