当网络选项卡显示正常时,如何调试生产环境的 UI Bug
一个版本在预发布环境看起来没问题,但我们的调度仪表板开始向几位主管显示错误的作业状态。API 响应是正确的,浏览器网络选项卡也很干净,而且没有人更改过端点。问题出在客户端状态层。一个 Zustand 选择器通过作业 ID 进行记忆化(memoizing),但一个新的过滤器同时使用了路由 ID 和状态。当路由更改时,组件保留了一个旧的派生行,导致看起来像是后端响应延迟了。 我通过在单独的选项卡中打开两个路由、记录精确的过滤器点击操作,并在选择器输出周围添加一个小的控制台跟踪来重现了这个问题。之后,我编写了一个具有相同序列的失败测试:加载路由 A,更改状态,切换到路由 B,然后重新获取数据。修复方案并不是大规模重写。我将选择器拆分为原始存储读取和路由范围的派生函数,然后在路由键更改时使派生映射失效。 一个节省时间的小细节是检查组件的 key。行组件重用了来自作业 ID 的 key,而视图是按…