很多前端项目后期难维护,不是因为代码写得差,而是状态边界被不断打破。
组件状态、页面状态、服务端状态和全局状态混在一起后,任何改动都会牵一发动全身。
先做状态分层
我习惯按“来源”和“生命周期”分四层:
- 组件局部状态:只影响当前组件
- 页面状态:路由级别共享
- 服务端状态:来自 API,可失效、可刷新
- 全局状态:跨页面且长期有效
分层后,你会发现很多“看起来要上全局”的状态其实只需要局部或页面级管理。
三条常用判断规则
状态是否跨路由共享?
不是,就别放全局。状态是否来自服务端并需要缓存?
是,优先交给服务端状态库管理。状态是否需要离线/持久化?
需要,再考虑全局 + 持久化。
这三条能挡住大量过度设计。
常见反模式
- 把表单输入值全塞进全局 store
- 用全局状态同步每个组件的临时 UI 状态
- 对服务端数据手写复杂缓存逻辑
这几种写法短期“统一”,长期“失控”。
小结
状态管理本质是边界管理。
边界清晰后,不管你用哪套技术栈,代码都会更稳定、更可预测。