目标

react使用redux的主要目的是:
1)实现简洁统一的状态维护,提高代码可维护性;
2)实现简洁的注入依赖,避免重重传递参数;
Plug Any Data Into Any Component. This is the problem that Redux solves. It gives components direct access to the data they need.
3)实现自动化渲染。

index.js

应用的入口代码

import React from 'react';
import { render } from 'react-dom';
import Counter from './Counter';
import { Provider } from 'react-redux';
import { createStore } from 'redux';const initialState = {count: 0
};function reducer(state = initialState, action) {switch(action.type) {case 'INCREMENT':return {count: state.count + 1};case 'DECREMENT':return {count: state.count - 1};default:return state;}
}/**
* 1) 创建全局存储对象 store,传入合适的reducer.
*/
const store = createStore(reducer);/**
* 2) 将store实例绑定到 App
*/const App = () => (<Provider store={store}><Counter/></Provider>
);render(<App />, document.getElementById('root'));

组件代码

import React from 'react';
import { connect } from 'react-redux';/**
* index.js创建的store全局对象,会注入到所有下级对象中,因此这里才可以使用dispatch函数来改变属性。
*/
class Counter extends React.Component {increment = () => {//实际上是调用全局store对象的dispatch函数this.props.dispatch({ type: 'INCREMENT' });}decrement = () => {this.props.dispatch({ type: 'DECREMENT' });}render() {return (<div><h2>Counter</h2><div><button onClick={this.decrement}>-</button><span>{this.props.count}</span><button onClick={this.increment}>+</button></div></div>)}
}//具体的属性转换函数
function mapStateToProps(state) {return {count: state.count};
}//通过connect方法将store的state属性转换成本组件的属性
export default connect(mapStateToProps)(Counter);

Redux-React 代码原理分析相关推荐

  1. KMP算法之NEXT数组代码原理分析 - 数据结构和算法38

    KMP算法之NEXT数组代码原理分析 让编程改变世界 Change the world by program KMP算法之NEXT数组代码原理分析 NEXT数组:当模式匹配串T失配的时候,NEXT数组 ...

  2. 数据结构与算法之KMP算法中Next数组代码原理分析

    2019独角兽企业重金招聘Python工程师标准>>> 一.KMP算法之Next数组代码原理分析       1.Next数组定义 当模式匹配串T失配的时候,Next数组对应的元素指 ...

  3. onnx_calibrate calibration代码原理分析

    Onnx_calibrate calibration代码原理分析 Calibration的思想是通过一堆验证数据集输入到网络中,统计每一层layer的输出值,通过对比量化前后数据统计分布之间的KL散度 ...

  4. 《一周学完光线追踪》学习 十一点五 离焦模糊代码原理分析

    蒙特卡洛光线追踪技术系列 见 蒙特卡洛光线追踪技术 首先分析一下生成随机Ray的程序: vec3 random_in_unit_disk() {vec3 p;do {p = 2.0*vec3(rand ...

  5. unity 双指触控(以及多指触摸的代码原理分析)

    双指触摸规律:从第一根触摸的手指开始 ,会从0开始为其编号,假设中间抬起手指,假设现在有两根手指,抬起编号为0的手指的话,将会导致原本编号为1的手指编号变为0,而当再次按下一根新手指时,原本编号0的手 ...

  6. 树莓派学习笔记(十六)编写内核驱动操控IO口代码原理分析

    驱动源码.测试源码可查看博文:内核驱动操控IO口源码(pin4引脚) 寄存器地址.引脚对应的位数等原理可查看博文:BCM2835芯片手册导读 1.驱动代码编写 框架查看博文:基于框架编写驱动 1.1 ...

  7. ADAS-开源环视360全景拼接代码原理分析与实现(一)

    引言 " 汽车360影像是一项比较先进的技术,它通过多个高清摄像头将车辆的外部环境进行拍摄,并将这些影像进行处理和融合,以生成一张完整的全景图像.这种技术已经被广泛应用于汽车行业,为驾驶员提 ...

  8. 后门BROOTKIT代码学习和原理分析

    周末闲来无事,想找点东西学习一下,随手翻到了之前看到的一篇关于brootkit的文章,知道它是用Bash写的一个后门程序.刚好最近在做Bash相关的工作,就想着学习一下这方面的知识,稍作整理之后就有了 ...

  9. Adaboost算法原理分析和实例+代码(简明易懂)

    Adaboost算法原理分析和实例+代码(简明易懂) [尊重原创,转载请注明出处] http://blog.csdn.net/guyuealian/article/details/70995333   ...

最新文章

  1. Windows Phone 7 开发 31 日谈——第6日:工具栏
  2. HDU2091 空心三角形
  3. 介绍一个统计各个网站访问时长的Chrome扩展 - Rooster
  4. 【Microstation】三维建模基础及软件入门到精通实验教程目录
  5. Java面向对象编程学习
  6. 【OpenCV 例程200篇】23. 图像添加中文文字
  7. 镇政府事业编怎么样,工作压力大吗?
  8. 小试牛刀--编程实现获取计算机的IP地址和计算机名
  9. Illustrator 教程,如何在 Illustrator 中使用曲率工具绘制?
  10. 2020五一建模评测体验
  11. instantclient php,Oracle 轻量即时客户端Instant Client安装配置
  12. 5G 商用第三年:无人驾驶的“上山”与“下海”
  13. PHY之MDIO解析
  14. [转]挑礼物指南:价格不高却有格调的礼物,送给挑礼物困难症的你(多图预警)...
  15. mysql 视图 多个 select_MySQL中Update、select联用操作单表、多表,及视图与临时表的区别...
  16. 北航数理统计大作业_数学146分上岸复旦大学大数据学院统计学,备考经验分享!...
  17. Chrome DevTools 通过 cdp 调节 CPU Throttling
  18. Higgs全球区块链投融资交流会(香港站)成功举办,路演项目备受瞩目
  19. 【MindInsight】在win下安装MindInsight遇到“ No module named apos;fcntlapos;“问题
  20. 搭建代理服务器获取大量IP

热门文章

  1. 让自己强大,必须放下十样东西
  2. 创建sdcard.img时,提示permission dennid
  3. EPSON EPL-6200 无法网络共享问题
  4. C# Reflection
  5. (转)ATOM介绍和使用
  6. 软件外包项目管理3点体会
  7. ASP.NET前台table通过Ajax获取绑定后台查询的json数据
  8. 动态规划经典题之石子合并
  9. 使用webpack开发ES6程序的正确姿势
  10. 【LeetCode】231. Power of Two