reactjs - 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);
}
解决方案
该函数setState
是异步的,因此您的控制台日志会显示在真正调用 setState 之前的状态。为避免此类行为,您可以像这样使用 setState:
this.setState({ data: yourData }, () => {
console.log(this.state.data)
// code called after the setState is finished. (callback)
})
推荐阅读
- javascript - ReferenceError:描述未定义,
- javascript - 使用 ajax 返回 null 的第三方 IP 地址 API
- go - 当对外部服务的内部引用变得“陈旧”时,如何制作自我更新二进制文件
- powerbi - 如何将充满“记录”的列转换为仅包含一个值的一列?
- pandas - 如何让python更快地应用自定义函数
- javascript - 如何强制 addEventListener 提交只运行一次
- html - 无法通过 div 获取隐藏菜单
- c++ - 如何将 libtorch 库添加到 CLION?
- spring-boot - 无法测试我的@RestController:嵌套异常是 org.springframework.beans.factory.NoSuchBeanDefinitionException:
- javascript - 如何演示 document.documentElement.clientWidth 和 innerWidth 之间的区别?