创建一个变量,保留上一次值
背景:
在回滚部署成功后,我需要提示「回滚成功」
当前部署状态通过在前端页面轮询实现
我的实现方案:通过监听 status 的变化,异步实现 lastStatus 的变化,可以在查询 status 和 lastStatus 的时候,得到 status 为 success 和 lastStatus 为 pending 的一个时机,弹出弹窗:
useEffect(() => {
setLastStatus(status);
}, [status]);
问题:
虽然能够通过 setXXX 是异步修改 lastStatus 的值的特性,让外部接口查询状态的时候,拿到一个弹出「回滚成功」的时机;
但是实际上,在下一次请求前,status 和 lastStatus 都是 一个状态,lastStatus 并没有按照它的命名,拿到部署状态的上一次状态,而是实时跟着 status 在变化
解决方案:
保留变量值版本的逻辑 –> 在修改这个变量之前,将变量的值保存
setLastStatus(status);
setStatus(res.status);