5月29日 22:40
Zustand 和 Redux 有什么区别?选哪个?
核心区别:Zustand 不需要 Provider 包裹、不需要 reducer/action 模板代码、store 直接用 set 修改。Redux 需要 Provider + createSlice + useDispatch + useSelector 四件套。Zustand 1KB vs Redux+RTK 30KB。选型:新项目/中小团队选 Zustand,已有 Redux 代码库或需要强约束选 Redux。
追问
Zustand 没有 DevTools 吗?
有。import { devtools } from zustand/middleware,用法和 Redux DevTools 一样,时间旅行、action 日志都支持。
Redux 的 middleware 体系 Zustand 怎么替代?
Zustand 用函数组合替代:create(devtools(persist(immer((set) => ...)))) 一行串联。异步不需要 thunk/saga,直接在 action 里 async/await。
大型项目 Redux 更稳吗?
Redux 的约束在大型团队中减少出错概率。但 Zustand 配合 TypeScript + selector 约定也能达到类似效果。关键是团队规范。
能混用吗?
可以但不推荐——两套模式增加认知负担。迁移建议:新模块用 Zustand,旧模块保持 Redux,逐步替换。
Immer middleware 和 RTK 的区别?
都是用 Immer 实现不可变更新,语法几乎一致,底层都是 produce。区别只在包装层。