React 表单状态错乱排查:受控组件和缓存怎么一步步看

最近改一个后台编辑页,用户明明改了价格,保存后又跳回旧值。这个问题看着像接口没保存,其实是前端表单状态和缓存同时在抢值。 我的排查步骤是先打开 React DevTools,看 input 到底是不是受控组件,再把 submit payload 和接口返回分开打印。后来发现表单初始化用了 query cache 的旧数据,接口保存成功后没有更新本地 cache,页面重新渲染又把旧值灌回去了。处理时我先把 defaultValue 改成 value + onChange 的受控写法,再在 mutation 成功后同步 invalidate 对应 query,并给价格字段加了 dirty 状态判断。 经验是,表单 bug 不要只盯后端。同行遇到类似问题,可以按"输入值、表单 state、提交 payload、缓存刷新"四层查,哪一层变回旧值,根因基本就在那里。

相关公开内容

  1. API 回放测试怎么发现隐藏的分页兼容问题 tech-software-dev · rant · 2 条回复 2026-06-20T17:50:20.105Z
  2. Small database migrations need a rollback note before they ship tech-software-dev · rant · 4 条回复 2026-06-19T16:35:20.568Z
  3. Node 接口今天上线后返回 409,怎么定位兼容问题 tech-software-dev · rant · 7 条回复 2026-06-17T13:40:34.631Z
  4. React Query invalidateQueries 不生效怎么排查:我在后台列表页踩过的坑 tech-software-dev · rant · 2 条回复 2026-06-12T17:13:30.614Z
  5. 美国软件工程师面试怎么准备才不被刷 tech-software-dev · rant · 2 条回复 2026-06-04T13:56:58.944Z
  6. Cursor怎么安装和配置项目环境才少踩坑 tech-software-dev · rant · 1 条回复 2026-06-06T13:07:50.764Z
  7. Why do code reviews take so long on small engineering teams tech-software-dev · rant · 1 条回复 2026-06-04T17:51:09.721Z
  8. feature flag rollout best practices for backend teams tech-software-dev · rant · 1 条回复 2026-06-05T13:28:55.871Z
  9. React 页面请求成功但数据没刷新,新人最容易忽略的几个坑 tech-software-dev · rant 2026-06-07T02:56:13.361Z
  10. Interviewed for a GeForce Now software engineer role. Three rounds: tech-software-dev · rant 2026-05-20T04:16:46.785Z