我有以下内容:
addTodo() {
const text = prompt("TODO text please!")
this.setState({todos:[...this.state.todos,
{id:id++,
text: text,
checked:false}]})
console.log(this.state)
}
控制台显示一个空数组,这是有意义的,因为setState是异步的。我将函数更改为使用回调:
addTodo() {
const text = prompt("TODO text please!")
this.setState(function(prevState){
return {todos: [...prevState.todos,
{id: id++,
text: text,
checked: false} ]}
})
console.log(this.state)
}
console.log仍然显示一个空数组。不使用回调更新setState吗?
答案 0 :(得分:1)
setState
函数的第二个参数应该是设置state
后需要调用的函数。所以你应该像第二个参数那样传递回调
this.setState({
todos:[
...this.state.todos,
{id:id++,text: text,checked:false}
]
},() => {console.log(this.state)})