Essay / 技术文章

更新于 2026 年 6 月 8 日

构建可维护的前端状态管理

从状态归属、更新边界与派生数据出发,建立一套不过度设计的状态管理方法。

状态管理真正困难的部分,通常不是选择哪一个库,而是回答三个问题:

  1. 这份状态属于谁?
  2. 谁可以更新它?
  3. 哪些值其实可以被计算出来?

从状态归属开始

如果一份数据只影响单个组件,就让它留在组件内部。只有当多个相距较远的消费者需要共享同一事实来源时,才值得提升状态。

type CartItem = {
  id: string;
  quantity: number;
};

const totalItems = (items: CartItem[]) =>
  items.reduce((total, item) => total + item.quantity, 0);

totalItems 是派生值,不应被存储成第二份状态。减少重复事实来源,通常比更换状态库更能降低复杂度。

先设计状态边界,再选择工具。工具应该服务于边界,而不是定义边界。

保持更新路径单一

允许任意模块直接修改共享状态,会让排查成本快速上升。集中更新入口,并让每次更新表达明确意图,可以让日志、测试与回滚都更可靠。

结语

可维护的状态管理不是把所有数据放进一个容器,而是让每份数据待在最小、最清楚的位置。