react如何状态管理
React 状态管理方案
React 提供了多种状态管理方案,适用于不同规模的应用程序。以下是常见的几种方法:
内置状态管理(useState/useReducer)
适用于组件内部或简单父子组件间的状态共享。useState 用于基础状态管理,useReducer 适合复杂状态逻辑。
const [count, setCount] = useState(0);
const [state, dispatch] = useReducer(reducer, initialState);
Context API
适用于跨多层级组件共享状态,避免了 prop drilling 问题。需要配合 useContext 使用。
const ThemeContext = createContext('light');
<ThemeContext.Provider value="dark">
<ChildComponent />
</ThemeContext.Provider>
Redux 适用于大型应用,提供可预测的状态容器。核心概念包括 store、action 和 reducer。
const store = createStore(rootReducer);
<Provider store={store}>
<App />
</Provider>
MobX 采用响应式编程模型,通过 observable 和 action 管理状态。适合偏好 OOP 风格的开发者。
class Store {
@observable count = 0;
@action increment() { this.count++ }
}
Recoil Facebook 推出的实验性状态管理库,采用原子(atom)和选择器(selector)概念。
const textState = atom({ key: 'textState', default: '' });
const [text, setText] = useRecoilState(textState);
Zustand 轻量级状态管理方案,不需要 Provider 包裹组件,API 简洁。
const useStore = create(set => ({
bears: 0,
increase: () => set(state => ({ bears: state.bears + 1 })),
}));
Jotai 类似 Recoil 的原子化状态管理,但更轻量且兼容 React 18 并发特性。
const countAtom = atom(0);
const [count, setCount] = useAtom(countAtom);
选择建议
- 小型应用:useState/Context API
- 中型应用:Zustand/Jotai
- 大型复杂应用:Redux/MobX
- 实验性项目:Recoil
所有方案都需要考虑团队熟悉度和项目需求,过度工程化可能适得其反。







