reactjs - 仅在状态和任何相关效果完成更新后调用函数
问题描述
我有一个 buttonClick 基本上执行以下操作:
function func() {
const [bool, setBool] = useState();
const [data, setData] = useState({});
useEffect(()=>{
if(bool) {
setData({bool: true})
} else {
setData({bool: false})
}
}, [bool]);
onClick=(evt)=>{
setBool(true);
sendToDb(data);
}
}
我知道 useState 是异步的。有没有办法做出反应,我可以让发送到数据库的调用等到设置数据的 useEffect 完成?
解决方案
只需使用另一个 useEffect 来发送您的数据。
function func() {
const [bool, setBool] = useState();
const [data, setData] = useState({});
useEffect(()=>{
if(bool) {
setData({bool: true})
} else {
setData({bool: false})
}
}, [bool]);
useEffect(()=>{
sendToDb(data);
}, [data]);
onClick=(evt)=>{
setBool(true);
}
}
推荐阅读
- angular - 如何以角度获得Activatedroute
- python - 如何在 python 中发布带有请求的有效负载?
- influxdb - 在 influxdb 中,“tag”消耗的存储空间是否比“field”少?
- erlang - 如何从 Erlang 的其他目录访问 .beam 文件?
- bash - How to capture output of df -h --total - Bash
- c++ - c++程序计算求解分段函数(涉及指针)
- reactjs - 将uri转换为文件反应本机js
- f# - 为什么 F# 交互式控制台不认为“assert (2=3)”是错误的?
- java - 同一事务中不同 CDI 事件的执行顺序
- c# - 底层连接已用linkedin关闭