【问题标题】:How to fix "no-param-reassign" eslint error?如何修复“no-param-reassign”eslint 错误?
【发布时间】:2019-07-25 10:16:08
【问题描述】:

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

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

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

如何解决这个问题?

【问题讨论】:

  • 这个函数是怎么使用的?你能显示它在哪里被调用,以及它的结果在哪里被使用吗?

标签: javascript eslint


【解决方案1】:

基本上你是用forEach修改你的filterList,改用map


filtersList.map(filter => {
  if (filter.title === "Timeframe") {
    return {
      ...filter,
      options: filter.options.map(obj => ({ ...obj, selected: false }))
    };
  }
  return filter;
});

【讨论】:

【解决方案2】:

您现有的代码改变了参数数组中的对象,这导致了 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 变量。这样可以确保没有任何内容发生变异。

【讨论】:

    猜你喜欢
    • 2019-10-30
    • 1970-01-01
    • 2021-01-09
    • 1970-01-01
    • 1970-01-01
    • 2016-01-08
    • 2017-05-28
    • 1970-01-01
    • 2019-03-18
    相关资源
    最近更新 更多