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