如何处理useState延迟

时间:2020-07-09 06:14:41

标签: reactjs react-hooks

在React中,我经常在setState()之后进行其他操作(或api交互)中使用常量的状态,但是在代码的这一部分运行时,状态仍未更新是很常见的,时间导致错误/意外行为。

是否有处理此问题的最佳实践?还是useState本身的推荐替代品?

谢谢:)

4 个答案:

答案 0 :(得分:1)

状态更改后,您可以使用useEffect执行函数,但是此方法也将触发useEffect第一次渲染中的内容,并修复需要创建自定义项的问题钩

const [age, setAge] = useState(0)

useEffect(() => {
   console.log('the age has changed', age)
}, [age])

答案 1 :(得分:0)

您可以使用useEffect钩子在组件渲染到dom之前加载状态,也可以在useEffect中使用异步方法调用api

useEffect(()=>{
const myfunc=async()=>{
await //do api calls here

}
myfunc()

})

答案 2 :(得分:0)

如果没有钩子,则setState将获得一个回调函数,但是使用钩子时,您应使用useEffect来实现。

Check it out

答案 3 :(得分:0)

由于setState()是异步的,因此大多数错误/意外的结果都会由于此行为而发生,因此您需要通过播放状态来正确理解此异步行为。如果使用正确的状态处理来正确处理组件的生命周期,那么您将不会看到任何意外行为。更多信息:https://reactjs.org/docs/state-and-lifecycle.htmlhttps://css-tricks.com/understanding-react-setstate/