关于 Redux

89 阅读2分钟

Redux 是 JavaScript 状态容器,提供可预测化的状态管理。

Redux 并不是 React 的插件库,其中 React Redux 是 Redux 官方的 React 对 Redux 的绑定库

redux-thunk 中间件,用来处理异步请求

Redux 非常轻量,体积只有 2kb (包括依赖)。

使用场景

  1. 跨组件实现 state 共享

    很多 state 需要在多个组件中使用,兄弟组件之间也很常用,如果不使用 Redux ,需要在父组件中写一个状态,兄弟组件共享此状态

  2. 在任意位置获取某个状态

  3. 在某个组件中修改全局状态(组件与全局变量)

  4. 在某个组件中修改另一个组件的状态(组件与组件)

  5. 页面数据量大,不易管理和维护时

3个核心概念

redux有三个核心概念:

  • actions
  • store
  • reducer

actions

actions 是用来存放整个应用的 state 的容器,它由 createStore(reducer) 方法生成。actions 的结构为包含 { type, payload } 的对象

store

store有且只能有一个,他相当于一个最高指挥家,他负责把action动作交给对应的reducer进行执行,也就是说将state、action和reducer联系在一起的对象。

  • type字段为必填字段
  • 其他字段自定义

image.png

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 的数据)

image.png

Redux 相关 API

  • createStore // 创建仓库
  • bindActionCreator // 绑定store.dispatch和action
  • combineReducers // 合并多个 reducers
  • compose // 整合多个中间件
  • applyMiddleware
  • ...

其它 API 参考 Redux 中文官网