setstate即使使用回调和handlefunction-reactjs也不更新状态

uoifb46i  于 2021-09-23  发布在  Java
关注(0)|答案(1)|浏览(244)

我有一个句柄函数,它在另一个组件中调用。这将传递一个名为data的值,我希望将其更新到 state .

//basic code
initialState = {
  wordCount:"Some Value"
  text: "Some value"
}
class Home extends Component{
  state = initialState;
  handler(data){
    console.log('Arrived',data)
    this.setState({wordCount:data,text:GetText(data,this.state)});
    this.validation();
  }
  validation(){
    console.log(this.state.wordCount)
  }
  render(){
  return (
      <div><Component handlerFunc={this.handler.bind(this)}</div>
  )
  }

打印 data 在我的处理函数中,我确实以字符串形式接收正确的信息。我使用setstate来替换 wordCount 的初始值 data . 我也这样做 text . gettext返回一个字符串。
但在运行验证时,我的状态完全相同。这怎么可能?

kgsdhlau

kgsdhlau1#

注意:react中的setstate是异步的。
这意味着不能保证状态在下一个语句之前已经改变。要避免这种情况,您可以做的是setstate接受回调,它将在setstate完成时调用。

this.setState(
   {
       wordCount:data,
       text:GetText(data,this.state)
   }, 
   () => { 
    // Gets called when setState updates the state
    this.validation() 
});

相关问题