
react 生态圈之 Redux
发布日期:2021-05-08 01:27:10
浏览次数:23
分类:精选文章
本文共 1270 字,大约阅读时间需要 4 分钟。
一、Redux 前端为何需要状态管理库
-
Redux
,JS
状态管理框架,Redux
让组件通信更加容易,把store
放在组件外,所有组件和store
进行中转 -
Redux
特性,如下所示:
- 单向数据流
- 可预测性,
state + action = new state
- 纯函数更新
Store
二、Redux 深入理解 Store、Action 和 Reducer
store
可以通过createStore
,传入reducer
进行创建,包含三个方法,如下所示:
getState()
,获取当前的状态dispatch(action)
,派发一个action
subscribe(listener)
,监听store
的变化
(state,action) => new state
,如下所示:
Store
Actions
Reducer
View
-
combineReducers
,能够接受多个reducer
作为参数,最终返回一个封装后的reducer
-
bindActionCreators
,将单个或多个ActionCreator
转化为dispatch(action)
的函数集合形式,不用再手动dispatch(actionCreator(type))
,而是可以直接调用方法
三、在 React 中使用 Redux
connect
的工作原理,高阶组件
四、Redux 理解异步 Action、Redux 中间件
(state,action) => new state
,如下所示:
Store
Actions
Reducer
View
Middleware
Redux
中间件,Middleware
,如下所示:
- 截获
action
- 发出
action
-
异步
action
不是特殊action
,而是多个同步action
的组合使用 -
中间件在
dispatcher
中截获action
做特殊处理
五、Redux 如何组织 Action 和 Reducer
- 标准形式
Redux Action
的问题,如下所示:
- 所有
Action
放一个文件,会无限扩展 Action、Reducer
分开,实现业务逻辑时需要来回切换- 系统中有哪些
Action
不够直观
-
新的方式,单个
action
和reducer
放在同一个文件 -
新的方式,每个文件一个
Action
,如下所示:
- 易于开发,不用在
action
和reducer
文件间来回切换 - 易于维护,每个
action
文件都很小,容易理解 - 易于测试,每个业务逻辑只需对应一个测试文件
- 易于理解,文件名就是
action
名字,文件列表就是action
列表
六、Redux 理解不可变数据 immutability
- 不可变数据
immutable data
,需要不可变数据,如下所示:
- 性能优化
- 易于调试和跟踪
- 易于推测
- 如何操作不可变数据,如下所示:
- 原生写法,
{...}, Object.assign
immutability-helper
immer
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年03月22日 12时43分05秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
go语言简单介绍,增强了解
2021-05-08
python file文件操作--内置对象open
2021-05-08
架构师入门:搭建基本的Eureka架构(从项目里抽取)
2021-05-08
MongoDB 快速扫盲贴
2021-05-08
EXTJS4.2——10.Tab+Iframe
2021-05-08
one + two = 3
2021-05-08
sctf_2019_easy_heap
2021-05-09
PyQt5之音乐播放器
2021-05-09
Redis进阶实践之十八 使用管道模式提高Redis查询的速度
2021-05-09
SQL注入
2021-05-09
MPI Maelstrom POJ - 1502 ⭐⭐ 【Dijkstra裸题】
2021-05-09
Problem A - Sequence with Digits (数学推导)
2021-05-09
Problem 330A - Cakeminator (思维)
2021-05-09
LeetCode75 颜色分类 (三路快排C++实现与应用)
2021-05-09
C语言+easyX图形库的推箱子实现
2021-05-09
调试vs2019代码的流程
2021-05-09
脱壳与加壳-加壳-6-代码实现加密导入表
2021-05-09
Typora配置PicGo时,提示Failed to fetch
2021-05-09
ASP.NET CORE MVC 实现减号分隔(Kebab case)样式的 URL
2021-05-09
bcolz的新操作
2021-05-09