Redux 是 JavaScript 状态容器,提供可预测化的状态管理。
Redux 并不是 React 的插件库,其中 React Redux 是 Redux 官方的 React 对 Redux 的绑定库
redux-thunk 中间件,用来处理异步请求
Redux 非常轻量,体积只有 2kb (包括依赖)。
使用场景
-
跨组件实现 state 共享
很多 state 需要在多个组件中使用,兄弟组件之间也很常用,如果不使用 Redux ,需要在父组件中写一个状态,兄弟组件共享此状态
-
在任意位置获取某个状态
-
在某个组件中修改全局状态(组件与全局变量)
-
在某个组件中修改另一个组件的状态(组件与组件)
-
页面数据量大,不易管理和维护时
3个核心概念
redux有三个核心概念:
- actions
- store
- reducer
actions
actions 是用来存放整个应用的 state 的容器,它由 createStore(reducer) 方法生成。actions 的结构为包含 { type, payload } 的对象
store
store有且只能有一个,他相当于一个最高指挥家,他负责把action动作交给对应的reducer进行执行,也就是说将state、action和reducer联系在一起的对象。
- type字段为必填字段
- 其他字段自定义
reducer
reducer 可以有多个(reducers),用于将 store 发过来的 action 完成,同时将结果返回给 store。
- 格式:reducer(previousState,action)
- 两个参数:preState(旧状态)和 action(动作)
- 返回值 newState(新状态)。
在 React 中使用
安装
npm i react-redux
// 或
yarn add react-redux
App.js 中引入store
import store from './store'
在组件中使用:
- useSelector :用来获取 store 的数据
- useDispatch :引入 dispatch 方法(传入 action,更改 store 的数据)
Redux 相关 API
- createStore // 创建仓库
- bindActionCreator // 绑定store.dispatch和action
- combineReducers // 合并多个 reducers
- compose // 整合多个中间件
- applyMiddleware
- ...
其它 API 参考 Redux 中文官网