---恢复内容开始---

把React的官网入门例子全看一遍,理解了,但自己从头开始写有点困难,这次强迫自己从头开始写,并写好注释:

import React, { Component } from 'react';class CountTag extends Component {constructor(props) {super(props)//与render函数的onClick绑定,必须绑定,不然js找不到这两个函数this.onClickAdd = this.onClickAdd.bind(this)this.onCLickReduce = this.onCLickReduce.bind(this)}onClickAdd(){}onCLickReduce(){}render() {return (<div>{/*与html的标签无异,定义两个按钮和点击函数,但还没有实现它,预定一个props.num让父组件传值*/}<button onClick={this.onClickAdd}>+</button><button onClick={this.onCLickReduce}>-</button>counter:{this.props.num}</div>
        )}
}
export default CountTag

运行结果:

接下来该实现点击+ -功能了,当我们只做这个页面时,也就是说不需要父组件,可以把thisp.props.num换成state:

import React, { Component } from 'react';class CountTag extends Component {constructor(props) {super(props)//与render函数的onClick绑定,必须绑定,不然js找不到这两个函数this.onClickAdd = this.onClickAdd.bind(this)this.onCLickReduce = this.onCLickReduce.bind(this)this.state = {initValue: 0}}//+ =>函数
    onClickAdd(){this.state.initValue++//设置statethis.setState({initValue:this.state.initValue})}//- => 函数
    onCLickReduce(){this.state.initValue--//设置statethis.setState({initValue: this.state.initValue})}render() {return (<div>{/*与html的标签无异,定义两个按钮和点击函数,但还没有实现它,预定一个props.num让父组件传值*/}<button onClick={this.onClickAdd}>+</button><button onClick={this.onCLickReduce}>-</button>counter: {this.state.initValue}</div>
        )}
}
export default CountTag

现在按钮功能可以正常使用了:

接下来让我们做一个相对比较复杂的计数器,先看一下运行结果:

三个计数器,下面是一个总和,现在可以新建一个父组件CountParent.js

两个文件的完整代码附上:CountTag.js

import React, { Component } from 'react';class CountTag extends Component {constructor(props) {super(props)//与render函数的onClick绑定,必须绑定,不然js找不到这两个函数this.onClickAdd = this.onClickAdd.bind(this)this.onCLickReduce = this.onCLickReduce.bind(this)this.state = {initValue: this.props.num}}//+ =>函数
    onClickAdd(){this.onUpdateFunc(true)}//- => 函数
    onCLickReduce(){this.onUpdateFunc(false)}onUpdateFunc(flag){const previousValue = this.state.initValue//当点击+时flag为真,返回++,反之亦然const newValue = flag ? ++this.state.initValue : --this.state.initValuethis.setState({initValue: newValue})//这个函数作为一个props来传递数据,这里是最重要的this.props.updateCount(previousValue,newValue)}render() {return (<div style={style}>{/*与html的标签无异,定义两个按钮和点击函数,但还没有实现它,预定一个props.num让父组件传值*/}<button style={style} onClick={this.onClickAdd}>+</button><button style={style} onClick={this.onCLickReduce}>-</button>{/*countername表示第一个计数器,num表示父组件给的初值,并把这个初始值赋给当前组件的state*/}{this.props.countername} counter: {this.state.initValue}</div>
        )}
}
const style = {margin: '16px'
}
export default CountTag

CountParen.js

其中CountTag.js里面的onUpdateFunc(flag)比较重要,里面有个this.props.uodateCount(previousValue,newValue),这个是组件间传递数据的关键所在,

父组件也用一个函数名不同,但参数相同的来接送子组件传递的数据,从而达到计数器总和的效果。

转载于:https://www.cnblogs.com/doudoublog/p/7775441.html

React:入门计数器相关推荐

  1. React 入门手册

    大家好,我是若川.推荐这篇可收藏的React入门手册.也推荐之前一篇类似的文章<如何使用 React 和 React Hooks 创建一个天气应用>. 点击下方卡片关注我.加个星标 Rea ...

  2. React学习笔记一(React入门+JSX+脚手架)

    文章目录 1. React介绍和特点 1.1 React是什么 1.2 React的特点 2. React的开发依赖 2.1 React的三个依赖 2.2 Babel和React的关系 2.3 Rea ...

  3. react入门代码_如何在React中构建温度控制应用程序-包括提示和入门代码

    react入门代码 我们正在建立的 (What we're building) In this beginner React project, we're going to learn how to ...

  4. React入门看这篇就够了

    2019独角兽企业重金招聘Python工程师标准>>> 摘要: 很多值得了解的细节. 原文:React入门看这篇就够了 作者:Random Fundebug经授权转载,版权归原作者所 ...

  5. 《慕课React入门》总结

    React 入门与实战 react组件 虚拟DOM的概念 这是React性能高效的核心算法 React为此引入了虚拟DOM(Virtual DOM)的机制.基于React进行开发时所有的DOM构造都是 ...

  6. React入门指引与实战

    React是Facebook公司推出的前端组件化解决方案,目的在于解决前端开发中存在的各个痛点.目前,前端框架与库层出不穷,形成了异常繁荣的局面,那么Facebook为何还要重复造轮子呢?究其原因,F ...

  7. React 入门学习笔记2

    摘自阮一峰:React入门实例教程,转载请注明出处. 一.获取真实的DOM节点 组件并不是真实的 DOM 节点,而是存在于内存之中的一种数据结构,叫做虚拟 DOM (virtual DOM).只有当它 ...

  8. 第一章:React入门

    第一章:React入门 1.1. React 1.1.1. 官网 英文官网: https://reactjs.org/ 中文官网: https://doc.react-china.org/ 1.1.2 ...

  9. react入门(1)之阮一峰react教程

    阮一峰老师的github地址:React Demos React 入门实例教程 1.HTML模板 <!DOCTYPE html> <html><head>// re ...

最新文章

  1. 分号是c语言中,问什么C程序里总是提示缺少分号;,而明明有分号?
  2. PUSHA/PUSHAD POPA/POPAD 指令详解
  3. java linux 串口_Linux Java 串口通信 | 学步园
  4. codeforces1012 B. Chemical table(并查集+思维)
  5. 小学学校计算机设备使用记录表,小学计算机上机记录文本表.doc
  6. asp.net mvc asp.net 页面跳转
  7. 别总抱怨自己怀才不遇,告诉你将才与帅才的12个差别!
  8. MVC中code first方式开发,数据库的生成与更新
  9. 啦啦外卖最新版41.9啦啦外卖41.9版本全开源
  10. 关于java分包原则
  11. GEE开发之Landsat8计算MNDWI和数据分析
  12. html语言 搜索引擎关键词 怎么写,HTML关键词
  13. webshell检测方式深度剖析---RASP(taint扩展)
  14. Vscode Remote SSH 远程连接失败过程报错:试图写入的管道不存在
  15. c语言实现七巧板积木拼图大全,七巧板拼图积木的制作方法
  16. 计算机课程学习心得ppt,计算机课程学习心得体会.docx
  17. 耶鲁女孩:改变,从背单词开始!(刘畅:我知道耶鲁会录取我的。学习,都要经历死记硬背)
  18. 2006年江苏专转本计算机试卷答案,2006年度江苏省普通高校专转本计算机试卷.doc...
  19. 浅谈如何上好小学信息技术课
  20. 使用terrasolid批量导出给定图幅点云

热门文章

  1. 经常使用的android弹出对话框
  2. css如何自动换行对于div,p等块级元素(转)
  3. JAVA类型转换问题
  4. Cisco交换机路由器的部分命令解析(3)
  5. B.Sport Mafia
  6. idea无法引用jar包中的class
  7. js-----第四篇
  8. Java基础 ----常用时间类
  9. xml 和 json 序列化忽略字段
  10. maven添加oracle jdbc依赖