Redux
Redux 是一个 JavaScript 的全局状态管理器。虽然主要是和 React 一起用,但只要是 JavaScript 就能用。
核心思想
- 全局状态(store)
- 状态是 immutable 的,只能通过 action 获得新的状态
- 这就是 reducer,即
(state, action) => newState,注意 reducer 应当是纯函数的,不要有 side effect
Redux 相关包和工具
- Redux Core:
redux - Redux Toolkit:
@reduxjs/toolkit,包含 Redux Core、Redux Thunk 和 Reselect,所以可以只添加这一个依赖 - React-Redux:
react-redux - Redux 浏览器扩展(DevTools)
拆解 React 组件
一个常见的 React 组件有:
- 状态
- 视图:基于状态、声明式、UI
- 动作:更新状态

注:图来自 Redux 官方文档
但是当多个组件需要共享组件时,就不这么优雅了,Redux 试图使用一个全局状态来解决问题。
具体概念
action:有type的纯对象,type是一个字符串reducer:(state, action) => newState,这个名字来自于 JavaScript 的Array.reduce(),必须是纯函数store:store.dispatch(action),store.subscribe(listener),store.getState()