setState数组导致无限循环

时间:2020-08-22 04:43:36

标签: reactjs react-hooks

我有根据采样大小创建的数组列表。当我setState数组与整个新数组。我遇到了无限循环错误。

代码

const sampleData = _.fill(Array(200), 0)
const [value, setValue] = useState(sampleData)

setValue(value.fill(100)) // Error

错误

错误:重新渲染次数过多。 React限制了渲染次数以防止无限循环。

1 个答案:

答案 0 :(得分:1)

在渲染期间,您不应调用从useState返回的setter函数。它们要么需要在hooks(useEffect,useCallback,useLayoutEffect)回调中调用,要么需要在非渲染阶段(如事件处理程序)中调用。

在这种情况下,您可以执行以下操作:

const sampleData = _.fill(Array(200), 0);
const [value, setValue] = useState(sampleData);

useEffect(() => {
  setValue(value.fill(100)); // Error
}, []);