本机反应为什么setState函数存在时间滞后?

时间:2018-06-21 11:24:47

标签: reactjs react-native

我有一个复选框,它在事件发生时调用两个函数,在第一个函数中,我要更改组件的状态,在第二个函数中,我要调用该状态以查看它是否已被第一个函数更改, 通过console.log显示该组件的状态,我看到仅在第二次单击复选框后才显示更改,因此,首先单击显示的空白数据,然后再次单击数据并在控制台上显示更改,请您帮我理解为什么有时间滞后吗?

这是我的代码:

<CheckBox  onPress={() => {this.treggerCheckBoxcallback(item); this.editeTask()}} />

//function 1
  treggerCheckBoxcallback = tsk => {
    let currentTasks = tsk;
  this.setState({ currentTask : currentTasks});
      };

// function 2
   editeTask = () => {
    console.log(this.state.currentTask);
    }

1 个答案:

答案 0 :(得分:3)

函数setState是异步的,因此您的控制台日志显示了在setState真正被调用之前的状态。为了避免这种行为,您可以像这样使用setState:

this.setState({ data: yourData }, () => {
  console.log(this.state.data)
  // code called after the setState is finished. (callback)
})