useReducer 是什么?和 useState 怎么选?如何配合 Context 做全局状态?

useReducer 用 (state, action) => newState 的 reducer 管理复杂状态,适合多子状态、状态转移逻辑复杂的场景(比一堆 useState 更清晰)。

const [state, dispatch] = useReducer(reducer, initialState)
dispatch({ type: 'increment' })

和 useState 选型:简单值用 useState;状态间有依赖/多种操作/需要可预测更新时用 useReducer。

配合 Context 做全局状态(轻量替代 Redux):

const Ctx = createContext()
<Ctx.Provider value={{ state, dispatch }}>{children}</Ctx.Provider>
// 子组件 const { dispatch } = useContext(Ctx)

注意:Context value 变化会让所有消费组件重渲染,宜拆细或用 useMemo 包裹 value。

同分类其他题目