概述:全局状态让数据与 UI 解耦、跨域复用更容易;Hook 封装便于局部组合,但跨 Hook 协作需要将“胶水逻辑”提升到组件或更高层。
对比
- 全局状态管理(redux/zustand/context)
- 优势:单一数据源、可观测、易复用、无需层层提升;便于调试与时间旅行。
Transclude of 全局状态管理#^xol61s
- 劣势:容易膨胀;需要约束切片边界与订阅粒度;需防止全量重渲染。
- 优势:单一数据源、可观测、易复用、无需层层提升;便于调试与时间旅行。
- Hook 封装
- 优势:关注点隔离、可组合;组件内聚合状态与副作用。
- 限制:Hook 之间不能直接互相调用非 Hook 上下文;跨 Hook 协作通常需要外层“胶水”统一编排。
经验法则
- 状态使用半径广/生命周期长/跨路由共享 → 放全局。
- 纯 UI 或局部临时状态/只在单组件树内使用 → 放 Hook/局部 state。
- 先内聚后上提。需求演进到跨域共享时,再抽到全局。