【发布时间】:2020-10-28 08:00:34
【问题描述】:
使用钩子根据之前的状态值更新状态,我不明白为什么修改现有对象并将其传递给 setState() 是不好的。我知道这不会导致重新渲染,因为状态仍然指向相同的引用,但除此之外,问题是什么?我不明白如何克隆数组,对其进行修改,然后将其传递给 setState() 来解决一些未知问题。
const [bigArr, setBigArr] = setState(Array(SOME_BIG_NUMBER).fill(false));
// (1) This seems to work, but is bad for some reason. But why?
bigArr[325] = true;
setBigArr(bigArr);
// (2) This is preferable for some reason. Why?
bigArrCopy = bigArr.slice();
bigArrCopy[325] = true;
setBigArr(bigArrCopy);
// (3) Is this OK? Why/Why not?
setBigArr(bigArrCopy => {
bigArrCopy[325] = true;
return bigArrCopy;
});
【问题讨论】:
标签: javascript reactjs react-hooks use-state