setState 中的回调似乎不起作用
callback in setState doesn't seem to work
我有以下内容:
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吗?
setState
函数的第二个参数应该是设置state
后需要调用的函数。所以你应该像这样将回调作为第二个参数传递
this.setState({
todos:[
...this.state.todos,
{id:id++,text: text,checked:false}
]
},() => {console.log(this.state)})
我有以下内容:
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吗?
setState
函数的第二个参数应该是设置state
后需要调用的函数。所以你应该像这样将回调作为第二个参数传递
this.setState({
todos:[
...this.state.todos,
{id:id++,text: text,checked:false}
]
},() => {console.log(this.state)})