我有一个按钮,我在单击该按钮时调用箭头函数 contentLoad。我有两个对象。一个是“obj”,另一个是“content”,它只是“obj”的副本。
this.setState({content: obj})
当我在控制台上打印它们时。另一个即复制的第一次点击为空。然而,第一次点击后一切看起来都很好。
整个项目是here
而js代码是this
最佳答案
一个鲜为人知的事实是 this.setState
是 React 中的一个异步函数。
它需要第二个参数,该参数是在实际设置状态后执行的回调。
this.setState(new_state, optional_callback_function)
因此,当您在记录 content
时看到打印出 null
时,这是因为在调用 console.log
之前尚未设置状态> 并且您只看到初始值 null
。
要解决这个问题并每次都能看到正确的值,您可以像这样重构您的代码:
this.setState({content: obj}, () => {
console.log(this.state.content);
})
关于javascript - 在 reactjs 中首次运行时在控制台上获取空对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56725708/