首页 > 解决方案 > react native 为什么 setState 函数有时间延迟?

问题描述

我有一个复选框,在按下事件时调用两个函数,在第一个函数中我正在更改组件的状态,在第二个函数中我正在调用该状态以查看它是否已被第一个函数更改,通过显示通过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);
    }

标签: reactjsreact-native

解决方案


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

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

推荐阅读