入到第四期,

代码大大简化,

但如果没有前面的演化过程,

一定让人蒙圈~~

三个主要文件:

index.js

import React from 'react';
import ReactDOM from 'react-dom';
import {Provider} from 'react-redux';import './index.css';import ControlPanel from './views/ControlPanel';
import store from './Store';import registerServiceWorker from './registerServiceWorker';ReactDOM.render(<Provider store={store}><ControlPanel /></Provider>, document.getElementById('root'));
registerServiceWorker();

Counter.js

import React, { Component } from 'react';
import PropTypes from 'prop-types';
import {connect} from 'react-redux';import * as Actions from '../Actions.js';const buttonStyle = {margin: '10px'
};const propTypes  = {caption: PropTypes.string.isRequired
};function Counter({caption, onIncrement, onDecrement, value}){return (<div><button style={buttonStyle} onClick={onIncrement}>+</button><button style={buttonStyle} onClick={onDecrement}>-</button><span> { caption }  count: {value}</span></div>);}Counter.propTypes  = {caption: PropTypes.string.isRequired,onIncrement: PropTypes.func.isRequired,onDecrement: PropTypes.func.isRequired,value: PropTypes.number.isRequired
};function mapStateToProps(state, ownProps) {return {value: state[ownProps.caption]}
}function mapDispatchToProps(dispatch, ownProps) {return {onIncrement: () => {dispatch(Actions.increment(ownProps.caption));},onDecrement: () => {dispatch(Actions.decrement(ownProps.caption));}}
}export default connect(mapStateToProps, mapDispatchToProps)(Counter);

Summary.js

import React, {Component} from 'react';
import PropTypes from 'prop-types';
import {connect} from 'react-redux';function Summary ({value}) {return (<div>Total Count: {value}</div>);
}Summary.propTypes  = {value: PropTypes.number.isRequired
};function mapStateToProps(state){let sum = 0;for (const key in state) {if (state.hasOwnProperty(key)) {sum += state[key];}}return {value: sum};
}export default connect(mapStateToProps)(Summary);

实操《深入浅出React和Redux》第四期--react-redux相关推荐

  1. 【React】React全家桶(四)React脚手架

    文章目录 1 使用create-react-app创建react应用 1.1 React脚手架 1.2.创建项目并启动 1.3 react脚手架项目结构 1.4 组件化编码流程 2 脚手架版 Hell ...

  2. RabbitMQ第四个实操小案例——DirectExchange

    文章目录 RabbitMQ第四个实操小案例--DirectExchange RabbitMQ第四个实操小案例--DirectExchange DirectExchange:这种交换机的模式跟前面的Fo ...

  3. 史上最高效Shell四剑客实操案例

    01.Shell编程四剑客之Find 通过如上基础语法的学习,读者对Shell编程有了更近一步的理解,Shell编程不再是简单命令的堆积,而是演变成了各种特殊的语句.各种语法.编程工具.各种命令的集合 ...

  4. wireshark分析tcp协议(二)四次挥手(异常情况)【理论 + 实操】

    上一章:wireshark分析tcp协议(一)三次握手[理论 + 实操] 在完成对三次握手的抓包后,间隔了一段时间,来进行四次挥手的抓包. 知识背景 问题一:为什么要四次挥手呢? 在上一章的三次挥手中 ...

  5. Python学习笔记7:实操案例四(支付密码的验证,模拟QQ账号登录,商品价格竞猜,星座看运势)

    Python学习笔记7:实操案例四(支付密码的验证,模拟QQ账号登录,商品价格竞猜,星座看运势) 1.支付密码的验证: 这个主要就是调用isdigit()函数判断字符串是不是全是数字组成. pwd=i ...

  6. Python学习笔记17:实操案例十四(模拟高铁售票系统,推算几天后的日期)

    Python学习笔记17:实操案例十四(模拟高铁售票系统,推算几天后的日期) 1.模拟高铁售票系统 使用漂亮的表格模块PrettyTable 这个模块需要预先安装,不然直接导入会报错: 安装办法: h ...

  7. DIV+CSS实操四:经管系网页内容模块内容添加(一)

    我们继续接着DIV+CSS实操系列:DIV+CSS实操一:经管系网页总体模块布局,DIV+CSS实操二:经管系网页 添加导航栏和友情链接栏和DIV+CSS实操三:经管系网页内容模块添加标题栏和版权信息 ...

  8. roc曲线的意义_实用!Biomarker表达差异图、ROC曲线amp;四格表的实操手册

    解螺旋·蘑菇老师详细讲解biomarker研究在课题设计方面需要注意的一些共性问题,包括标本类型.样本收集以及病例资料三大部分. 本期课程则汇总了biomarker研究中的典型图表以形成"图 ...

  9. AppArmor零知识学习十四、实操与实践(2)

    本文内容参考: Linux安全模块AppArmor总结-CSDN博客, apparmor首页.文档和下载 - 应用程序访问控制系统 - OSCHINA - 中文开源技术交流社区, AppArmor · ...

最新文章

  1. Mysql练习题15-给定数字的频率查询中位数
  2. python怎么知道用哪个库使用-Python绘图库讲解:4大常用库你准备学哪个?
  3. 关于css知识要点总结大全
  4. Google App Engine JAX-RS REST服务
  5. 如何在 IIS 中设置 HTTPS 服务
  6. 远程mysql定时删除数据_mysql定时备份数据库 删除历史文件 将备份数据库传送到另外服务器...
  7. php 仿电脑桌面系统,EonerCMS——做一个仿桌面系统的CMS(十-附最新源码)
  8. 排序算法对比、总结(Python代码)
  9. java-第十章-类和对象-创建管理员对象
  10. GRE 隧道配置案例(静态、动态路由)
  11. 阻滞增长模型求解_种群增长模型
  12. 6个座位办公室最佳位置_6个办公室座位的最佳位置 六个最好的办公室座位位置...
  13. Win10删除需要trustedinstaller权限的文件的方法
  14. vmin、vmax用处
  15. app指纹登录 java后端_Android应用实现指纹登录
  16. [Xcelsius]BI展现工具之Xcelsius
  17. 《Linux高性能服务器编程》阅读笔记 之(二)IP 协议详解
  18. Javascript 暂停/终止脚本
  19. 一分钟学会如何给图片降噪,给图片降噪也可以很简单!
  20. SCA连载GDPR罚单 | 瑞典高中人脸识别被罚,为我们敲响了哪些警钟?

热门文章

  1. 将keras训练好的神经网络模型生成独立于python环境运行的.exe文件并在matlab中调用(上篇)
  2. 安装google输入法后,左shift键不能切换中英文
  3. 八、【中级篇】数码管驱动(74HC138,74HC595)
  4. 宏病毒组(五)|病毒基因组系统发育树
  5. Tiled有java版本吗_【Cocos2d-X开发学习笔记】开发工具之Tiled地图编辑器的使用
  6. 风变编程,让小白也能轻松学会!
  7. 安卓 新闻客户端毕业设计项目
  8. 一篇讲左偏树的好文章~
  9. 全网最详细最基础的网络安全入门教程
  10. Whitelabel Error Page(2)之Internal Server Error