详情页打开删除确认弹窗,点弹窗里的“查看帮助”跳到帮助中心,按返回键回来弹窗还开着,遮罩盖住刚更新的数据。日志里能对上时间点,这种反而好排。

弹窗可见状态存在全局 store 里,路由变化没有关掉它。页面组件已经卸载,store 里的布尔值还是 true。这一点先确认清楚,后面就不用反复试。

useEffect(() => () => setConfirmOpen(false), []);
// 或在路由监听里 closeAllOverlays();

「弹窗状态路由残留」改完先别急着全量,挑一台机器放半天,真有问题这段时间就能看出来。先做最小复现,能稳定跑出来的问题,排查成本会低一个数量级。

别只看报错的最后一行,往上看几行,真正的起因通常在上面。同类问题如果隔一段时间又出现,多半是某个定时任务或重启流程把改动冲掉了。

处理上按这个顺序:弹窗状态放页面组件内部 随卸载销毁;确实要全局控制就在路由变化时统一关闭;返回时重新拉一次详情 避免看到旧数据;开着弹窗跳走再返回 确认遮罩不在。

结果对不对很好判断,从帮助中心返回后弹窗不再出现,详情数据是重新请求后的值。

作者 9823189