【发布时间】:2021-07-24 01:16:36
【问题描述】:
在更新状态时,react hook useState 的工作方式与 setState 类似。 这意味着异步操作。 我的项目倾向于以 2 秒的超时时间更新状态。
如果我有一个包含 3 个值的数组,并且我想创建一个循环并每 2 秒更改一次状态,但该操作只是像异步函数一样采用最后一个状态。
有什么想法吗?
for (let i=0; i<arr.length; i++) {
setTimeout(() => setStr(arr[i]), 2000);
}
【问题讨论】:
-
我的意思是..您在 2 秒后同时进行所有三个更改。它们很可能会被分组到同一个渲染中。
-
这在 React 中实际上是一件棘手的事情,但绝对有可能。我会首先查看其他人是如何制作 useInterval 和 useTimeout 挂钩的。你需要像usehooks-typescript.com/react-hook/use-interval 这样的东西,但可以设置限制。
标签: reactjs asynchronous state