首先要明白工作的过程:组件通过dispatch action去触发store里面的reducer,然后reducer返回一个新的state去改变store里面的值。我们dispatch的action里面必须写明白type是啥,这样reducer里面进行switch action.type的时候才能匹配到需要return的state是什么样的,因为可能没有匹配的type,所以reducer必须写一个默认的return state。
然后开始通过例子说明:
从actions开始吧。 actions其实就是一个对象,这个对象留着给组件dispatch给reducer。我们经常看到的是返回action对象的函数。像这样子

function addOne() {//+1return {type: 'ADD_ONE'}
}function reduceOne() {//-1return {type: "REDUCE_ONE"}
}function addCustomNumber(number) {//接收一个参数,等着给reducer取出来去改变state的值return {type: "ADD_CUSTOM_NUM",number}
}

接下来是reducer,也就是和我们的state产生联系的纯函数。它接收两个参数,第一个是state,可以赋值一个state的初始状态,第二个参数是action,也就是我们的组件通过dispatch一个action的时候,store会把这个action作为参数传给reducer。

const initialState = {count: 0};
const counter = (state = initialState, action) => {switch (action.type) {case 'ADD_ONE':return { count: state.count + 1};case 'REDUCE_ONE':return { count: state.count - 1};case 'ADD_CUSTOM_NUM':debuggerreturn { count: state.count + action.number}default:return state;}
}

store: 一个应用只有一个store,createStore接收reducer作为参数。如果有多个reducer可以用combineReducer把多个reducer结合在一起传给createStore。

const store = createStore(counter);//创建store,把reducer和state联系起来

组件:通过connect(mapStateToProps, mapDispatchToProps)(组件) 可以访问到store里面特定的state和action,避免因为监听所有state变化造成性能问题。在mapDispatchToProps里面可以用bindActionCreators把dispatch和action creator绑定在一起,这样就直接调用action creator函数就相当于直接dispatch了。最后,要把连接后的组件写在provider里面,才能正常访问到store。于是乎,又回到那个观点,组件触发dispatch action, store里面的reducer会判断action的类型,然后返回新的state,state的变化也会触发组件的更新。

export class Counter extends React.Component {render() {const { count, addOne, reduceOne, addCustomNumber } = this.props;return <div><button onClick={addOne}>+</button><span>{count}</span><button onClick={reduceOne}>-</button><button onClick={() => addCustomNumber(5)}>add five</button></div>}
}function mapStateToProps(state) {return {count: state.count}
}function mapDispatchToProps(dispatch) {//这样写就不用在组件里面还要去dispatch啦,直接把dispatch和actions createor绑定在一起,// 调用actions creator函数就是调用dispatch actionsreturn bindActionCreators({addOne, reduceOne, addCustomNumber}, dispatch);
}const WrappedCounter = connect(mapStateToProps, mapDispatchToProps)(Counter);//组件和store, actions连接起来,从而能在组件里面访问store和actions

redux工作原理简单入门相关推荐

  1. TI CC1101学习笔记:工作原理简单入门

    众所周知,在IOT的市场应用中,从通信协议细分的话,有SUB-1G,2.4G,3G, 4G,以及最新推出的5G,虽然5G通信协议已经在崭露头角,但是不同的通信协议在不同的应用领域之中还是占据着一定的重 ...

  2. Print2Flash的工作原理与入门使用

    Print2Flash是一款十分优秀的虚拟打印机软件,其在将可打印文档的打印转化过程中都表现出了卓越的性能,能方便地完成待发布文档信息的制作.编辑.发布和在线浏览. 本文主要介绍一下Print2Fla ...

  3. 【常用工具】BurpSuite工作原理及入门

    目录 1 工作原理 1.1 工作原理简介 1.2 BurpSuite默认代理信息 1.3 浏览器设置代理 2 Proxy 2.1 Proxy拦截功能简介 2.2 Proxy拦截信息面板简介 3 Spi ...

  4. 慢慢学Linux驱动开发,第四篇,USB工作原理简单分析

    1.简单概念 学习U盘驱动,不仅仅是去关注drivers/usb/storage目录下那相关的3000行代码. 毕竟,作为U盘,她需要与usb core打交道,需要与scsi core打交道,需要与内 ...

  5. 《Hexo: 从零开始编写自己的主题》1. Hexo概述以及Hexo工作原理

    <Hexo: 从零开始编写自己的主题> 1. Hexo概述以及Hexo工作原理 2. 入门Hexo主题编写 3. 优化样式,设计自己的主题 4. fancybox优化图片展示效果.代码高亮 ...

  6. PMSM学习笔记1——永磁同步电机的工作原理与数学模型

    文章目录 一.PMSM工作原理 1.同步电机工作原理(来源:<电机学>李发海) 2.永磁同步电机数学模型及坐标变换(来源:<现代电机控制技术> 王成元) 2.1旋转磁场 2.2 ...

  7. 懂GPU服务器的工作原理

    GPU服务器是一种用于计算机科学技术领域的计算机及其配套设备,于2017年5月31日启用. 一.GPU服务器的用途 GPU服务器是基于GPU功能的视频编解码.深度学习.科学计算等多种场景的快速.稳定. ...

  8. 解析电子墨水屏技术(工作原理与LCD的区别)【转】

    转自:https://blog.csdn.net/weixin_42509369/article/details/84646808 阅读电子书早已成为大家生活中一部分,方便轻巧的电子版书籍更便于携带, ...

  9. 笔记本电源适配器的工作原理及其类型简介

    随着笔记本产品和功能的多样化,其运行功率也相应的提高,这对 笔记本电源适配器(也就是笔记本电脑的充电器)提出了更高的要求.据调查85%的笔记本使用者喜欢轻巧小型,能立刻存电使用并不产生热量的笔记本电源 ...

  10. 照明基础知识(一)---白炽灯(热辐射光源)发展史工作原理

    一.白炽灯 1)白炽灯的发展史 ​ 说到白炽灯,几乎大家第一反应想到的就是发明家托马斯·阿尔瓦·爱迪生(Thomas Alva Edison),准确的讲爱迪生发明的是第一只可商业化.可量产白炽灯泡.为 ...

最新文章

  1. 使用json-lib实现json to javabean
  2. java寻找最大的字母_【LeetCode(Java) - 744】寻找比目标字母大的最小字母
  3. 判断正则 shell_【US分享】Shell中的括号
  4. python哪本好-Python入门看哪本书好? 这里有答案
  5. 15. 三数之和(双指针)
  6. 实验十四-团队项目评审课程学习总结
  7. C#利用DataGridView实现数据的快速输入
  8. JAVA中文支持指南(Vera Yuanti)
  9. Python批量提取docx格式Word文档中所有文本框内的文本
  10. Dijkstra算法求最短路径(附leetcode 743 网络延迟问题)
  11. [菜鸟必学]网络以及***命令行全收录
  12. Matlab程序转为C++代码
  13. 武汉大学计算机学院乒乓球室,武汉大学经济管理学院教职工乒乓球队在武汉大学师生乒乓球赛中获佳绩...
  14. vue代码怎么变成小程序_从项目中由浅入深的学习vue,微信小程序和快应用 (1)
  15. 逆序整数求和C语言,c语言 数字逆序相加
  16. 苹果手机白屏_安卓卡顿苹果闪退,手机换代的动力原来是这些
  17. Google将推出Android手机版Voice应用程序
  18. python 打开电脑摄像头
  19. 每天都在用WiFi,WiFi和无线网络什么关系?了解此篇足矣
  20. Python 声音降噪

热门文章

  1. Atitit 如何工作积极的心态积极起来
  2. Atitit webservice的发现机制 discover机制
  3. atitit.农历的公式与原理以及农历日期运算
  4. Atitit eclipse新特性总结3.1---4.4  4.5
  5. paip.python错误解决16
  6. paip.docfile二进制复合文档
  7. paip.提升安全性-------生成一个安全的验证码
  8. Rust: trait 孤儿规则
  9. (转)密码学研究与区块链实践应该打破隔空喊话
  10. (转)一个百倍股的坠落:那个曾经满大街的ESPRIT是如何衰败的