react-集中式状态管理

465 阅读2分钟

redux

redux简介

1.redux是一个专门用于做状态管理的JS库(不是react插件库)。

2.它可以用在react, angular, vue等项目中, 但基本与react配合使用。

3.作用: 集中式管理react应用中多个组件共享的状态。

redux使用场景

1.数据共享:某个组件的状态,需要让其他组件可以随时拿到(共享)。

2.组件间通信:一个组件需要改变另一个组件的状态(通信)。

理解

redux原理图.png

redux的三个核心概念之action

1.Action内部的作用为合成动作对象,在Action内部可执行异步操作。

2.action对象---在修改数据时的动作对象

3.action对象包含2个属性

  • type:标识属性, 值为字符串, 唯一, 必要属性 (要干什么)
  • data:数据属性, 值类型任意, 可选属性(需要的数据)

redux的三个核心概念之reducer

1.reducer用于初始化状态加工状态

2.加工时,根据旧的state和action, 产生新的state的纯函数。

redux的三个核心概念之store

1.store将state、action、reducer联系在一起

2.内部调用createStore()创建store对象

3.store对象的内部方法:

  • getState(): 得到state
  • dispatch(action): 分发action, 触发reducer调用, 产生新的state
  • subscribe(listener): 注册监听, 当产生了新的state时, 自动调用

redux异步编程

1.redux默认是不能进行异步处理的

2.某些时候应用中需要在redux中执行异步任务(ajax, 定时器)

3.使用redux-thunk中间件实现异步:npm install --save redux-thunk

react-redux

1.一个react插件库,专门用来简化react应用中使用redux

2.react-Redux将所有组件分成两大类

内容组件
1)只负责内容的呈现,不带有任何业务逻辑
2)通过props接收数据(一般数据和函数)
3)不使用任何 Redux 的 API
4)一般保存在components文件夹下

容器组件
1)负责管理数据和业务逻辑,不负责UI的呈现
2)使用 Redux 的 API
3)一般保存在containers文件夹下

react-redux模型图.png

react-Redux相关API

(1).Provider:让所有组件都可以得到state数据

(2).connect:用于包装 UI 组件生成容器组件

(3).mapStateToprops:将外部的数据(即state对象)转换为UI组件的标签属性

(4).mapDispatchToProps:将分发action的函数转换为UI组件的标签属性