React:入门计数器
---恢复内容开始---
把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:入门计数器相关推荐
- React 入门手册
大家好,我是若川.推荐这篇可收藏的React入门手册.也推荐之前一篇类似的文章<如何使用 React 和 React Hooks 创建一个天气应用>. 点击下方卡片关注我.加个星标 Rea ...
- React学习笔记一(React入门+JSX+脚手架)
文章目录 1. React介绍和特点 1.1 React是什么 1.2 React的特点 2. React的开发依赖 2.1 React的三个依赖 2.2 Babel和React的关系 2.3 Rea ...
- react入门代码_如何在React中构建温度控制应用程序-包括提示和入门代码
react入门代码 我们正在建立的 (What we're building) In this beginner React project, we're going to learn how to ...
- React入门看这篇就够了
2019独角兽企业重金招聘Python工程师标准>>> 摘要: 很多值得了解的细节. 原文:React入门看这篇就够了 作者:Random Fundebug经授权转载,版权归原作者所 ...
- 《慕课React入门》总结
React 入门与实战 react组件 虚拟DOM的概念 这是React性能高效的核心算法 React为此引入了虚拟DOM(Virtual DOM)的机制.基于React进行开发时所有的DOM构造都是 ...
- React入门指引与实战
React是Facebook公司推出的前端组件化解决方案,目的在于解决前端开发中存在的各个痛点.目前,前端框架与库层出不穷,形成了异常繁荣的局面,那么Facebook为何还要重复造轮子呢?究其原因,F ...
- React 入门学习笔记2
摘自阮一峰:React入门实例教程,转载请注明出处. 一.获取真实的DOM节点 组件并不是真实的 DOM 节点,而是存在于内存之中的一种数据结构,叫做虚拟 DOM (virtual DOM).只有当它 ...
- 第一章:React入门
第一章:React入门 1.1. React 1.1.1. 官网 英文官网: https://reactjs.org/ 中文官网: https://doc.react-china.org/ 1.1.2 ...
- react入门(1)之阮一峰react教程
阮一峰老师的github地址:React Demos React 入门实例教程 1.HTML模板 <!DOCTYPE html> <html><head>// re ...
最新文章
- 分号是c语言中,问什么C程序里总是提示缺少分号;,而明明有分号?
- PUSHA/PUSHAD POPA/POPAD 指令详解
- java linux 串口_Linux Java 串口通信 | 学步园
- codeforces1012 B. Chemical table(并查集+思维)
- 小学学校计算机设备使用记录表,小学计算机上机记录文本表.doc
- asp.net mvc asp.net 页面跳转
- 别总抱怨自己怀才不遇,告诉你将才与帅才的12个差别!
- MVC中code first方式开发,数据库的生成与更新
- 啦啦外卖最新版41.9啦啦外卖41.9版本全开源
- 关于java分包原则
- GEE开发之Landsat8计算MNDWI和数据分析
- html语言 搜索引擎关键词 怎么写,HTML关键词
- webshell检测方式深度剖析---RASP(taint扩展)
- Vscode Remote SSH 远程连接失败过程报错:试图写入的管道不存在
- c语言实现七巧板积木拼图大全,七巧板拼图积木的制作方法
- 计算机课程学习心得ppt,计算机课程学习心得体会.docx
- 耶鲁女孩:改变,从背单词开始!(刘畅:我知道耶鲁会录取我的。学习,都要经历死记硬背)
- 2006年江苏专转本计算机试卷答案,2006年度江苏省普通高校专转本计算机试卷.doc...
- 浅谈如何上好小学信息技术课
- 使用terrasolid批量导出给定图幅点云