当前位置:网站首页>搞懂redux一篇就够了
搞懂redux一篇就够了
2022-07-30 05:40:00 【勿扰丶】
什么是redux
redux是一个应用数据流框架,主要解决了组件间状态共享的问题,原理是集中式管理,主要有三个核心方法:action,store,reducer,工作流程是view调用store的dispatch方法接收action为参数传入store,通过action.type判断执行对应的reducer进行store操作,view通过store提供的getState获取最新的数据。
redux的设计思想与工作原理
- 针对dispatch和subscribe
- 分别认识redux工作流中最为核心的dispatch动作以及redux自身独特的发布-订阅模式
- dispatch这个动作刚好把action,reducer和store这三个主角给串联了起来
dispatch这个动作- 调用dispatch,入参为action对象。
- 前值校验
- 上锁:将isDispatching置为true(防止套娃)
- 调用reducer,计算新的state
- 解锁:将isDispatching置为false
- 触发订阅
- 返回action
禁止套娃用意:作为计算state专用函数redux在设计reducer时就强调了他必须是纯净的,不应该额外的脏操作。
- subscribe并不是一个严格必要的方法,只有在需要监听状态的变化时我们才会调用它。
- redux默认了订阅对象就是’状态的变化(dispatch)‘这个事件。
- subscribe与redux主流程的结合
- 在store对象创建成功后,通过调用store.subscribe来注册监听
- 当dispatch.action发生时,redux会在reducer执行完毕后,将listeners数组中的监听函数逐个执行。
- 工作流:调用subscribe,入参是一个函数 - 前置校验 - 调用ensureCANMutateNextLieners确保nextListeners与currentListeners不指向同一个引用 - 注册监听函数,将入参listener函数推入nextListeners数组中 - 返回取消订阅当前listener的方法(unsubscribe)
- nextListeners注册监听,触发订阅,取消订阅,取消监听,currentListeners数组用于确保监听函数执行过程的稳定性
redux中间件
- 中间件的引用对redux工作流的改变。
- redux源码中只有同步操作,如果想要redux引入异步数据流需要使用中间件来增强createStore(redux-thunk).
- action - middleware - dispatch - reducer - nextState
- 中间件的执行时机是action被分发之后,reducer触发之前
- 执行前提:applyMiddleware将会对dispatch函数进行改写使dispatch在触发reducer之前会首先执行对redux中间件的链式调用。
- applyMiddleware是enhancer的一种,而enhancer的意思是增强器,它增强的正是createStore的能力。
边栏推荐
- 第一篇博客
- Error: listen EADDRINUSE: address already in use 127.0.0.1:3000
- Qt实现一个重复文件检测小工具(原理:通过md5校验)
- cross_val_score的用法
- 函数解剖——深挖getchar()与putchar()
- 5.6EPOLLONESHOT事件
- C语言人机大战之三字棋博弈
- Application Practice | Application Practice of Apache Doris in Baidu Intelligent Cloud Billing System
- String类型字符串获取第一次或者最后一次出现的下标
- Qt设置窗口可拖动
猜你喜欢
随机推荐
C语言:通过函数实现一个整形有序数组的二分查找
C语言自定义类型一网打尽(结构体、位段/位域、枚举、联合体)
函数解剖——深挖printf()与scanf()
torch.load()
646.最长数对链(动态规划)
5.6EPOLLONESHOT事件
Socket通信编程
安装pytorch
海量号码需要保存,如何才能尽可能少地占用内存?
easyexcel使用教程-导出篇
每日练习------输出一个整数的二进制数、八进制数、十六进制数。
Redis简单了解
人生的第一篇博客(初识代码)
字符串(一) 哈希
Mysql
‘kaggle视频游戏销售数据的可视化和分析‘项目实现
空杯心态,知行合一
SRA数据下载方法总结
Navicat cannot connect to mysql super detailed processing method
St. Regis Takeaway Project: New dishes and dishes paged query









