[一步一步学react系列] 04—计算器Demo

2023-11-13

前言:
之前的例子都是写的计数器,加一减一的功能,我们大致弄懂了redux分层和store数据管理,下面我们将结合现有知识写一个终极版的计算器。以此巩固所学知识
知识点:redux分层,react-router,一些算法及数据结构知识[栈 + 中缀转后缀]

首段祭出源码地址:
github:https://github.com/EmilyYoung71415/LearnReactDemo

效果图

这里写图片描述

项目结构

├──redux-demo/                 * 计算器Demo
      |
      |————src/                * 主程序
            │
            ├─Components       * 所有组件 
            │  ├─Calculator    * 计算器
            │  ├─Counter       * 计数器 
            │  └─StudyDemos    * 学习的一些有帮助的demo 
            │      └─备份文件夹 * 笔记 等我写完博客就清 
            ├─Error            * 错误组件 
            ├─Redux            * Redux 
            │  ├─Action
            │  ├─Containers
            │  ├─Reducer
            │  └─Store
            ├─Router           * 路由
            └─Style            * 所有样式变量 

为了便于初学者如我上手,我没有将分层的各个功能部件写在不同的文件下,而是采用了先写在一起然后分成多个文件的策略。如下是我的计算器代码,并没有加路由。
思路是:
1.布局:按钮值是数组,循环数组值生成按钮,一个函数监听所有的点击事件。flex布局,固定每行几个块。
2.确定当前实例中拥有的所有数据,接下来在这些数据中找出应该是state的数据。
即:在当前实例[计算器]中的所有数据,确定哪些是本组件内部管理的无需存到store上的数据。
也就是确定props数据与state数据。
props数据与state数据划分遵循三原则
1. 是否是通过父级props传来的,如果是则可能不是state
2. 会随时间推移而不变吗? 如果是则可能不是state
3. 你能根据组件中其他任何的state或者props计算出他吗?如果能,则可能不是state

由上推理:

  • 等号及等号前的数据: 通过用户的输入而来 会随时间推移而变 state
  • 等号后的数据: 能够计算得出
  • 按钮的值: 来源于父级props层层传递而来

综上我们可以得到属于本组件state状态的数据是:等号及等号前的数据
而每次计算的结果我们则存到redux的store里。即结果来源于props。
关于结果:
我们对应一个方法和一个参数

  • 方法:等于符号的点击 equalClick => 负责向外分发action
  • 参数: revdata 结果值 =>继承自strore,this.props.revdata

难点解说: http://www.xiexianbo.xin/wordpress/?p=519

源码解读:


                
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[一步一步学react系列] 04—计算器Demo 的相关文章

随机推荐

  • 【Mo 人工智能技术博客】时间序列预测——DA-RNN模型

    时间序列预测 DA RNN模型 作者 梅昊铭 1 背景介绍 传统的用于时间序列预测的非线性自回归模型 NRAX 很难捕捉到一段较长的时间内的数据间的时间相关性并选择相应的驱动数据来进行预测 本文将介绍一种基于 Seq2Seq 模型 Enco
  • 在centos7安装anaconda3操作手册

    一 Anaconda下载 进入anaconda官方网站下载个人免费版本 网站链接 点击download 选择Linux平台的安装包 二 Anaconda安装 1 执行如下指令 安装anaconda 进入当保存文件的目录 执行此指令 后期由于
  • Jina AI‘2021

    2022 农历新年进入倒数阶段 回望 2021 因为有了社区和开发者们的支持和助力 Jina AI 从产品 社区 到用户案例及团队 都取得了一些相当哇塞的成就 接下来 我们就一起来重温一下 2021 年 Jina AI 的惊喜变化 领取 J
  • 第十一天栈与队列

    20 有效的括号 力扣题目链接 opens new window 给定一个只包括 的字符串 判断字符串是否有效 有效字符串需满足 左括号必须用相同类型的右括号闭合 左括号必须以正确的顺序闭合 注意空字符串可被认为是有效字符串 题外话 括号匹
  • opencv项目实践一(答题卡识别)

    答题卡素材图片 思路 读入图片 做一些预处理工作 进行轮廓检测 然后找到该图片最大的轮廓 就是答题卡部分 进行透视变换 以去除除答题卡外的多于部分 并且可以对答题卡进行校正 再次检测轮廓 定位每个选项 对选项圆圈先按照竖坐标排序 再按照行坐
  • 十进制有符号小数转换成二进制数的实现_Matlab实现_归一化处理

    在一些数据处理过程中 需要将一组十进制小数转换成二进制数存储或者计算 这种操作在FPGA的使用中会经常遇到 本文分析了十进制小数转换成二进制数的方法 1 N位二进制数的取值范围 N位无符号型 unsigned 取值范围 2 N 1 0 可以
  • Java中守护线程的总结 thread.setDaemon(true)

    https www cnblogs com ziq711 p 8228255 html 在Java中有两类线程 User Thread 用户线程 Daemon Thread 守护线程 用个比较通俗的比如 任何一个守护线程都是整个JVM中所有
  • 服务器windows系统数据盘不显示不出来,解决云主机没有显示数据盘的问题

    随着网络的发展 越来越多的站长与企业都在使用云主机 但是目前由于云主机的尚未成熟 所有大家在使用过程中经常会遇到使用方面的问题 下面我们总结了下有关云主机重装或者初建时数据盘不见的问题做了解说 希望对大家有所帮助 经常会有用户询问 我们的云
  • R语言KERAS深度学习CNN卷积神经网络分类识别手写数字图像数据(MNIST)

    最近我们被客户要求撰写关于卷积神经网络的研究报告 包括一些图形和统计输出 在本文中 我们将学习如何使用keras 用手写数字图像数据集 即MNIST 进行深度学习 本文的目的是为了让大家亲身体验并熟悉培训课程中的神经网络部分 1 软件包的下
  • Vue-cli安装文档及使用(搭建vue-cli、nodejs、webpack架子)

    之前学习基础语法 todolist 所有的代码写在index html之中 大型项目不可维护 在真实vue项目开发过程中 会借助webpack打包工具帮助构建大型项目开发目录 再开发完成之后进行打包的操作 帮助生成线上可运行的代码 如果让每
  • 树莓派教程 - 1.5 树莓派GPIO库wiringPi 使用硬件串口ttyAMA0与ttyS0

    Git例程源码仓库 https github com ZhiliangMa raspberry git 上一篇介绍 ttyS0串口的用法 说到了此串口利弊 可能会出现乱码 但绝对能满足绝大部分的要求 本节使用 dev ttyAMA0 的方法
  • CentOS7 安装配置FTP服务器的问题

    C C 气象数据中心实战工业级项目系列 第三章 CentOS7 安装配置FTP服务器的问题 文章目录 C C 气象数据中心实战工业级项目系列 一 参考 二 设置 data ftp ftpuser upload目录 代表着只能在这个目录中上传
  • mysql in和exists性能比较和使用

    in 是把外表和内表作hash 连接 而exists是对外表作loop循环 每次loop循环再对内表进行查询 一直以来认为exists比in效率高的说法是不准确的 如果查询的两个表大小相当 那么用in和exists差别不大 如果两个表中一个
  • 【Redis入门】-浅谈redis事务

    说到事务大家都不陌生 在关系型数据库中 事务时并发控制的基本单位 他是一个操作的序列 可以包含多个指令 并且 对于一个事务 其内部的指令要么全部执行 要么都不执行 内部指令不可分割 关系型数据库的事务具有四个特性 1 原子性 2 一致性 3
  • 【大数据】Flink 详解(六):源码篇 Ⅰ

    本系列包含 大数据 Flink 详解 一 基础篇 大数据 Flink 详解 二 核心篇 大数据 Flink 详解 三 核心篇 大数据 Flink 详解 四 核心篇 大数据 Flink 详解 五 核心篇 大数据 Flink 详解 六 源码篇
  • 如何解决主机发送地址之后 从机没有发出ACK应答信号给主机

    1 iic总线从机没有返回应答给主机 我用的一个带有iic接口电量计和我的单片机通讯 我用逻辑分析仪分析数据发现主机写一个字节数据后从机并没有返回一个ack给主机 导致我后面读取从机的数据时全部是ff 请问各位iic大神 我该怎么去查问题呢
  • 给kali的Metasploit下添加一个新的exploit

    转载 https blog csdn net SilverMagic article details 40978081 首先在 usr share metasploit framework modules exploits 目录下新建一个自
  • SpringCloud01:认识微服务

    SpringCloud01 1 认识微服务 随着互联网行业的发展 对服务的要求也越来越高 服务架构也从单体架构逐渐演变为现在流行的微服务架构 这些架构之间有怎样的差别呢 1 0 学习目标 了解微服务架构的优缺点 1 1 单体架构 单体架构
  • 从服务器拿文件,怎么从远程服务器拿文件夹

    怎么从远程服务器拿文件夹 内容精选 换一换 添加节点时提示 添加节点失败 节点已存在 待添加节点的服务器上已安装系统性能分析或者添加过节点 如果待添加节点的服务器上已安装系统性能分析 需要登录服务器卸载系统性能分析 详细步骤请参见卸载 卸载
  • [一步一步学react系列] 04—计算器Demo

    前言 之前的例子都是写的计数器 加一减一的功能 我们大致弄懂了redux分层和store数据管理 下面我们将结合现有知识写一个终极版的计算器 以此巩固所学知识 知识点 redux分层 react router 一些算法及数据结构知识 栈 中