【问题标题】:callback in setState doesn't seem to worksetState 中的回调似乎不起作用
【发布时间】:2018-04-07 19:45:33
【问题描述】:

我有以下几点:

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吗?

【问题讨论】:

  • 您可以查看此post 以清除您对状态转换的担忧。

标签: reactjs callback setstate


【解决方案1】:

setState函数的第二个参数应该是设置state后需要调用的函数。所以你应该像这样将回调作为第二个参数传递

this.setState({
        todos:[
               ...this.state.todos,
               {id:id++,text: text,checked:false}
             ]
        },() => {console.log(this.state)})

【讨论】:

  • 对不起
猜你喜欢
  • 1970-01-01
  • 2011-01-13
  • 1970-01-01
  • 1970-01-01
  • 2011-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多