【发布时间】:2019-06-04 18:59:26
【问题描述】:
过去,我们已经明确警告过,调用 setState({myProperty}) 是异步的,this.state.myProperty 的值在回调之前或在下一个 render() 方法之前无效。
使用useState,如何在显式更新后获取状态的值?
这如何与钩子一起使用?据我所知,useState 的 setter 函数不接受回调,例如
const [value, setValue] = useState(0);
setValue(42, () => console.log('hi callback');
不会导致回调正在运行。
我在旧世界的另一个解决方法是在类上挂一个实例变量(e.g. this.otherProperty = 42),但这在这里不起作用,因为没有函数实例可以重用(在严格模式下没有this)。
【问题讨论】:
-
带有钩子 (
useEffect) 和传递当前状态变量的可能性 - 你的用例是什么让“当你完成更新状态时告诉我”?跨度> -
您可以将 useState 与回调函数一起使用。默认情况下不提供,但这个自定义钩子有帮助:github.com/the-road-to-learn-react/use-state-with-callback
-
useState的 setter 函数确实会按照此处的说明进行回调:reactjs.org/docs/hooks-reference.html#functional-updates 此问题是在此功能可用之前发布的还是什么
标签: javascript reactjs react-hooks