已关闭。此问题需要details or clarity。当前不接受答案。
**想要改进此问题吗?**通过editing this post添加详细信息并阐明问题。
20小时前就关门了。
Improve this question
我不需要更改第一个值(我不能使用setter,它会触发无限渲染)
const [x, setX] = useState([0,0]);
setX([,10])
已关闭。此问题需要details or clarity。当前不接受答案。
**想要改进此问题吗?**通过editing this post添加详细信息并阐明问题。
20小时前就关门了。
Improve this question
我不需要更改第一个值(我不能使用setter,它会触发无限渲染)
const [x, setX] = useState([0,0]);
setX([,10])
1条答案
按热度按时间ef1yzkbh1#
如果你不考虑这些类型是通过引用而不是值来传递的,那么用数组或对象作为状态可能会导致问题。这就是为什么仅仅输入
setX([something])
就会触发一个无限的re render循环。因为对于react来说,每一次render都是把状态设置成新的东西(因为react使用==来检查状态是否真的改变了)。通常解决此类问题的方法是在
useEffect()
中调用setX()
(带有依赖数组),或者有条件地调用它(例如在eventlistener上)但由于我不知道你实际上想达到什么目的,我只能给予一个笼统的回答