发布于 2019-06-24 00:23:50
一个鲜为人知的事实是,this.setState
是React中的一个异步函数。它接受第二个参数,该参数是在实际设置状态后要执行的回调。
this.setState(new_state, optional_callback_function)
因此,当您在记录content
时看到null
被打印时,这是因为在调用console.log
之前没有设置状态,而您只是看到了初始值null
。
为了纠正这个问题并每次都能看到正确的值,你可以像这样重构你的代码:
this.setState({content: obj}, () => {
console.log(this.state.content);
})
发布于 2019-06-24 00:23:35
根据手册here
“对setState的调用是异步的-不要依赖this.state在调用setState后立即反映新值。如果需要根据当前状态计算值,请传递更新函数而不是对象(详细信息见下文)。”
发布于 2019-06-24 00:24:17
setState是异步的,所以它可能没有在紧随其后的console.log之前完成。
setState允许传递一个回调函数,该函数将在修改状态后调用。改为使用回调尝试此操作:
this.setState({content: obj}, () => console.log(this.state.content));
https://stackoverflow.com/questions/56725708
复制相似问题