前端知库

Context 与 useReducer 适合管理什么状态?

参考答案

Context 让组件读取祖先提供的值,适合主题、语言和有明确共享范围的状态。useReducer 用 reducer 描述动作到下一状态的转换,适合更新规则较复杂、需要集中表达业务动作的场景。

Context 值改变会影响读取该 Context 的消费者,memo 不会阻止消费者接收新的 Context。把所有状态放在一个巨大对象中,可能让无关消费者频繁更新;可以按变化频率与职责拆分提供者。

reducer 应保持纯函数,不在里面发请求或修改外部状态。服务端请求缓存、跨标签页同步和高频外部数据等需求,可能更适合专门的状态工具。先明确状态所有权,再决定是否需要全局存储。

补充参考