React linter warning:未使用的状态字段 - 在setState中使用state字段

时间:2018-05-31 18:51:37

标签: javascript reactjs eslint

我有一个状态数组,用于计算平均时间,也是状态。

this.state = {
  avgTime: null,
  allTimes: []
}

然后进行计算的方法:

this.getTime = () => {
  this.setState((prevState) => {
    const timeDelta = Date.now() - this.state.startTime;
    prevState.allTimes.push(timeDelta);
    const factor = 10 ** -1;
    const avgTime = Math.round((prevState.allTimes.reduce((a, b) => a + b) /
      prevState.allTimes.length) * factor) / factor;
    return {
      avgTime,
      allTimes: prevState.allTimes,
    }
  })
}

我的linter警告我allTimes是一个未使用的状态字段,即使我在setState中使用它。

这让我相信这是一种不好的做法,但我不确定为什么。这是我应该重构的东西,还是只是放下一个linter异常并继续前进?

1 个答案:

答案 0 :(得分:1)

Linter警告您,因为您没有在任何组件中使用此状态。我第一次遇到我也很困惑。但是,当我想到更多一点似乎是正确的。因为,如果我不使用它,为什么我要创建一个州甚至我们setState?

因此,如果您不使用它,则创建和设置状态会发出警告。