首页 > 解决方案 > React Hooks:渲染总是在 setState + setTimeout 之后完成吗?

问题描述

免责声明:我不认为以下方法是一种好的做法。可能我可能或必须使用useEffect,但我仍然想评估现有代码的正确性。

在钩子和功能组件的上下文中,以下假设是否正确?

{
    setState(newValue);
    setTimeout(() => {
       //Here code expects that re-rendering of all components affected by changing state has been completed.
    }, 0);
}

我可以确定重新渲染已经完成setTimeout还是不能保证?

  1. 这个假设对于当前的 React 版本是否正确?如果不是,是否有特定的行为破坏它?

  2. 它会受到即将到来的 React 更改的影响吗?

标签: reactjsreact-hooks

解决方案


不能保证。为了保证你的状态已经改变,你需要useEffect像这样使用

useEffect(() => {
   // do something now that state has changed
}, [state])

推荐阅读