redux学习笔记归纳
(1)Web 应用是一个状态机,视图与状态是一一对应的。
(2)所有的状态,保存在一个对象里面。
核心源码:
基本概念:
1.Store:就是保存数据的地方,你可以把它看成一个容器。整个应用只能有一个 Store。
const store = createStore(fn); 复制代码
2.State:Store对象包含所有数据。如果想得到某个时点的数据,就要对 Store 生成快照。这种时点的数据集合,就叫做 State。
store.getState();复制代码
3.Action:State 的变化,会导致 View 的变化。但是,用户接触不到 State,只能接触到 View。所以,State 的变化必须是 View 导致的。Action 就是 View 发出的通知,表示 State 应该要发生变化了。
function addTodo(text) {return {type: ADD_TODO,text}
} 复制代码
4.store.dispatch():是 View 发出 Action 的唯一方法。
5.Reducer:Store 收到 Action 以后,必须给出一个新的 State,这样 View 才会发生变化。这种 State 的计算过程就叫做 Reducer。
const reducer = function (state, action) {// ...return new_state;
}; 复制代码
实际应用中,Reducer 函数不用像上面这样手动调用,store.dispatch方法会触发 Reducer 的自动执行。为此,Store 需要知道 Reducer 函数,做法就是在生成 Store 的时候,将 Reducer 传入createStore方法。 为什么这个函数叫做 Reducer 呢?因为它可以作为数组的reduce方法的参数。
array.reduce(function(total, currentValue, currentIndex, arr), initialValue);复制代码
Redux 提供了一个combineReducers方法,用于 Reducer 的拆分。
const chatReducer = combineReducers({chatLog,statusMessage,userName
}); 复制代码
6. store.subscribe():Store 允许使用store.subscribe方法设置监听函数,一旦 State 发生变化,就自动执行这个函数。
redux流程机制:
中间件使用介绍:
1.redux-logger为例:将它放在applyMiddleware方法之中,传入createStore方法,就完成了store.dispatch()的功能增强,注意applyMiddleware(thunk, promise, logger)的参数顺序是固定的。
2.redux-thunk:使用redux-thunk中间件,改造store.dispatch,使得后者可以接受函数作为参数(如图异步action)。
3.redux-promise:就是让 Action Creator 返回一个 Promise 对象。
const fetchPosts = (dispatch, postTitle) => new Promise(function (resolve, reject) {dispatch(requestPosts(postTitle));return fetch(`/some/API/${postTitle}.json`).then(response => {type: 'FETCH_POSTS',payload: response.json()});
});复制代码
附:中间件applyMiddleware源码
转载于:https://juejin.im/post/5afd33f8518825673954f180
redux学习笔记归纳相关推荐
- Redux 学习笔记
1:首先安装redux: npm install --save redux 2:引入redux : import { createStore } from 'redux'; //首先创建执行函数,Re ...
- Android学习笔记——归纳整理
目录 一:Android系统架构 二:Actvity相关 2.1基础相关 2.2 Intent相关 2.2.1 Intent的组成 2.2.2 显式Intent 2.2.3 隐式Intent 2.2. ...
- 学习笔记之——Android常用属性归纳
本篇博客仅作为个人学习笔记所用,各种Android常用属性归纳长期更新,如有错误和建议还望指点~ 1.控件透明度和半透明度: 半透明<Button Android:background=&quo ...
- 【学习笔记】软件设计模式(一)基本概念与归纳总结
软件设计模式之基本概念与归纳总结 本人学习笔记.内容参考<Java设计模式>刘伟 教程配套PPT.仅供学习参考使用. 文章目录 软件设计模式概述 模式的分类 模式定义和特点的归纳总结 1. ...
- (学习笔记)【目标检测】YOLO系列简单归纳
文章目录 絮絮叨叨 一.YOLO发展史 二.逐篇学习 1.You Only Look Once: Unified, Real-Time Object Detection 2.YOLO9000 3.YO ...
- 经典算法——爬楼梯(解法归纳)(学习笔记)
问题分析 假设你正在爬楼梯.需要 n 阶你才能到达楼顶.每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢?是引用 当n=1时,只需爬一个台阶,就是一种解法. 当n=2时,可以走两次 ...
- C#学习笔记——菜鸟教程C#学习重点归纳
C#学习笔记 第一章:程序结构 一.结构 命名空间声明(Namespace declaration) 一个 class Class 方法 Class 属性 一个 Main 方法 语句(Statemen ...
- Hadoop学习笔记一 简要介绍
Hadoop学习笔记一 简要介绍 这里先大致介绍一下Hadoop. 本文大部分内容都是从官网Hadoop上来的.其中有一篇介绍HDFS的pdf文档,里面对Hadoop介绍的比较全面了.我的这一 ...
- ci mysql 事务_MySQL事务-学习笔记
MySQL事务-学习笔记 MySQL事务 事务的意义 案例:银行转账过程 A向B转账500,A原来有1000,B有500. 分析: SQL处理过程: A 减少 500 B 增加 500 以上两点必须同 ...
最新文章
- 不为人知的AI简史:“人机共生 ”梦想家 , 却意外促成互联网的出现
- 互联网1分钟 | 0306 熊猫直播被爆本月申请破产;腾讯QQ注销功能本周灰度体验,预计下周正式发布...
- html固定dl高度_HTML入门笔记1
- [react] React v15中怎么处理错误边界?
- openstack常用运维命令_运维人员常用的Linux命令汇总
- php输出语句echo、print、print_r、printf、sprintf、var_dump比较
- js 自学,云知梦知识 点理论
- swift -inout关键字
- 兆易创新GD32系列单片机不同容量和启动文件之间的选择(GD32F10X_MD/GD32F10X_HD/GD32F10X_XD/GD32F10X_CL)
- gaussdb 安全维护【设置帐户权限】【02】
- 态度决定一切细节决定成败_字体设计可以决定设计的成败:选择字体的过程
- Linux编译移植Qt5的环境_OMAPL138平台
- Aspose.Words doc转pdf 内容出现丢失,页码跳页,排版混乱问题
- unity使用easy ar制作ar红包
- 远期外汇交易的交割日
- deepin系统安装nginx
- 【网上教学】实现线上签到和收批作业的方法
- Unit3D打包android时出错 CommandInvokationFailure: Unable to list target platforms. Please make sure the a
- <caption>表格标题标签
- 【华人学者风采】James T. Kwok(郭天佑) 香港科技大学
热门文章
- xml tools属性详解
- 高级Android开发面试汇总
- (0087)iOS开发之NSString属性为什么要用copy来修饰?
- (010) java后台开发之String字符串操作
- (0062)iOS开发之Xcode自带单元测试UnitTest
- topcoder13444
- AutoML初创公司探智立方:模型的物竞天择与适者生存
- Cortex-A9 UART
- (转)对微软那棵TreeView进行试用,主要是对CheckBox进行操作
- 接口请求,上传byte数组byte[]数据异常,负数变正数/负数变63