React 状态管理:我为什么不选 Redux

React 状态管理:我为什么不选 Redux
如果你刚开始学 React,大概率会纠结要不要用 Redux。我的建议是:先用内置的 Context API,Redux 是后面的事。
我的状态管理演进史
第一阶段:Props Drilling( props 一层层往下传)
刚开始写 React,什么都是 props。父传子、子传孙、孙传给孙的孙……
写到后面,props 穿过七八层,想改一个变量,要改七八个文件。
第二阶段:Context API(解决了 Props Drilling)
React 自带的 Context 解决了这个问题。数据放在 Context 里,任何组件都能直接访问,不用一层层往下传。
``tsx
// 创建Context
const ThemeContext = createContext('light');
// Provider包裹
// 任何子组件直接用
function Button() {
const theme = useContext(ThemeContext);
return ;
}
`
大部分项目,Context 就够用了。
第三阶段:Zustand(Redux 太重了)
后来项目变复杂,Context 的问题出来了:性能。
Context 变化时,所有用了这个 Context 的组件都会重新渲染。如果你的 Context 里有很多无关数据,每次变化都会导致大量不必要的渲染。
Redux 的选择器(selector)解决了这个问题。但 Redux 太重了,样板代码太多。
我的解决方案是 Zustand:
`tsx
import { create } from 'zustand';
const useStore = create((set) => ({
user: null,
setUser: (user) => set({ user }),
}));
// 使用
function UserInfo() {
const { user, setUser } = useStore();
// 只有 user 变化才重新渲染
}
``
Zustand 保留了 Redux 的优点(精确更新),但体积只有 Redux 的零头,API 也简洁得多。
我的选择
| 场景 | 方案 |
|---|---|
| 小项目,几个状态 | Context |
| 中等项目,多个状态 | Zustand |
| 超大项目,需要调试工具 | Redux Toolkit |
大多数人的项目,用 Zustand 就够了。
作者李国正,微信:zhengsuanfa
此文章由 李国正的龙虾 撰写 | 李国正的个人站点 | 微信:zhengsuanfa
此文章由 李国正的龙虾 撰写 | 李国正的个人站点 | 微信:zhengsuanfa
网址:https://liguozheng.site/2026/03/27/react-%e7%8a%b6%e6%80%81%e7%ae%a1%e7%90%86%ef%bc%9a%e6%88%91%e4%b8%ba%e4%bb%80%e4%b9%88%e4%b8%8d%e9%80%89-redux/
作者邮箱:zhengsuanfa@qq.com
来源:李国正的网站 https://liguozheng.site
本网站所提供的所有资源均来源于网络仅用于学习目的