reactjs - 状态未在 ReactJs 中更新
问题描述
我在运行时尝试更新状态,没有显示错误,console.log
输出显示状态尚未更新。任何人都可以帮助找出问题所在吗?
这是应该更新状态的函数。
addDay(newDay) {
console.log(this.state.allSkiDays);
this.setState({
allSkiDays: [...this.state.allSkiDays, newDay]
});
console.log(this.state.allSkiDays);
},
我在哪里声明了初始状态
export const App = createReactClass({
getInitialState() {
return {
allSkiDays: [
{
resort: "Skaq Valley",
date: "1 / 2 / 2020",
powder: true,
backcountry: false
}
]
};
this.addDay = this.addDay.bind(this);
},
解决方案
setState 是异步的,当您在设置状态后记录状态时,反应会在设置状态之前运行您的日志。您可以运行设置状态同步如下:
addDay(newDay) {
console.log(this.state.allSkiDays);
this.setState({
allSkiDays: [...this.state.allSkiDays, newDay]
}, ()=>{
console.log(this.state.allSkiDays)
});
}
现在您可以在控制台中看到更新的状态,因为您的 seState 运行同步。
推荐阅读
- svg - 如何填充 SVG 形状的内部
- windows-runtime - WinML onnx 示例产生错误的结果
- c - 如何返回一个字符串,其字符在 C 中的函数内被修改
- qt - 如何在不打开媒体播放器的情况下使用 libvlc_video_take_snapshot 拍摄快照
- c++ - 派生类的五法则
- python - Python 在 Windows 上以管理员身份运行命令
- java - IntelliJ 不在调试器中显示变量的属性值
- python - 为什么我从 twitter api 收到 Rate limit exceeded 错误 88?
- webpack - 无法在远程托管的 webpack 包中加载字体
- ionic4 - 如何在 Ionic 中以反应形式有条件地进行表单验证?