我试图在运行时更新状态,未显示任何错误,并且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);
},
答案 0 :(得分:0)
setState是异步的,当您在设置状态后记录状态时,react将在设置状态之前运行日志。您可以按以下方式运行设置状态同步:
addDay(newDay) {
console.log(this.state.allSkiDays);
this.setState({
allSkiDays: [...this.state.allSkiDays, newDay]
}, ()=>{
console.log(this.state.allSkiDays)
});
}
现在,由于seState运行同步,因此您可以在控制台中看到更新的状态。