前端框架--React props与React state
版权声明:本文为博主原创文章,未经博主允许不得转载。
二者区别
state
和props
主要的区别在于子组件通过props
来传递数据,一旦外部传入数据后, props
不可改变。
而 state
作为状态私有,受控于当前组件,可以根据与用户交互来改变,但也不能随意改变。
React props
使用
- 新建一个组件,组件内创建使用
this.props.name
class HelloMessage extends React.Component {render() {return (<h1>Hello, {this.props.name}</h1>);}}
复制代码
2.组件内使用的this.props.name
需要通过外部数据传入,即在使用该组件时,需要进行值的传入。
<HelloMessage name='Liming' />
复制代码
React state
使用
- 新建一个组件,需要额外增加使用构造方法
constructor
,携带参数props
,constructor
内部使用super(props)
继承该方法参数,在底部进行state
值的设置。
constructor(props){super(props)this.state = {likes:0}}
复制代码
- 执行
render
函数进行组件渲染。在class
中,this
不会自动绑定到相应的类,需要手动进行绑定,若使用JavaScript语法,那么需要在步骤1中的constructor
内部额外增加。(下面的addNum
作为点击事件时执行的函数,大体逻辑功能为点击点赞按钮时进行加1操作)
- ES5写法
constructor(props){super(props)this.state = {likes:0}this.addNum = this.addNum.bind(this) //ES6使用箭头函数不需要此步骤}<button onClick = {this.addNum}>点赞{this.state.likes}</button>
复制代码
- ES6中使用箭头函数
() => {}
方式,可以自动绑定到类,不需要再额外手动绑定。
render() {return (<div><button onClick = {() => {this.addNum()}}>点赞{this.state.likes}</button></div>)}
复制代码
- 进行
state
值得状态更新时,不能直接修改,需要通过this.setState
进行修改,以addNum
方法为例。
addNum(){this.setState({likes: ++this.state.likes //使用this.setState()进行状态更新,++this.state.likes+1等同于this.state.likes+1})}
复制代码
附两个文件源码:
APP.js
import React from 'react';import './App.css';import LikesButton from './components/LikesButton';function App() {return (<div className="App"><LikesButton /></div>);}export default App;
复制代码
LikesButton.js
import React from 'react';class LikesButton extends React.Component{constructor(props){super(props)this.state = {likes:0}}addNum(){this.setState({likes:++this.state.likes})}render(){return (<div><button onClick = {() => {this.addNum()}}>点赞{this.state.likes}</button></div>)}}export default LikesButton;
复制代码
效果展示
转载于:https://juejin.im/post/5ce74d816fb9a07ee1690255
前端框架--React props与React state相关推荐
- (一)导学(前端框架面试-聚焦Vue/React/Webpack)
导学 全面 高效 学习前提 前端常见面试流程 知识点介绍 Vue框架部分 React框架部分 工具部分 项目设计 讲解方式 注意事项 全面 全面的知识体系 大量的面试真题 完整的技术面试流程 高效 直 ...
- 前端框架React Js入门教程【转】
现在最热门的前端框架有AngularJS.React.Bootstrap等.自从接触了ReactJS,ReactJs的虚拟DOM(Virtual DOM)和组件化的开发深深的吸引了我,下面来跟我一起领 ...
- 2020年最新前端框架大全,Web工程师人手一份!
今天跟大家分享一些目前比较热门新鲜度靠前的50款前端工具,希望对你有所帮助. 一.构建工具 1. Parcel 地址:https://parceljs.org Parcel是一款极速零配置WEB应用打 ...
- 50个好用的前端框架,千万收好以留备用!
来源 | https://www.jianshu.com/p/182b69e54fe8 今天跟你分享一些目前比较热门新鲜度靠前的50款前端工具,希望对你有所帮助. 一.构建工具 1. Parcel 地 ...
- 2020年最新前端框架大全,Web工程师人手一份
今天跟大家分享一些目前比较热门新鲜度靠前的50款前端工具,希望对你有所帮助. 一.构建工具 1. Parcel 地址:https://parceljs.org Parcel是一款极速零配置WEB应用打 ...
- 前端框架的新星-Hyperapp 1.0简介
原文链接:https://hackernoon.com/introducing-hyperapp-1-0-dbf4229abfef 在这个React, Vue, Angular三足鼎立的前端框架圈(其 ...
- 理解前端框架、前端库,两者有什么区别
一.前端框架(Framework).前端库(Library)两者的概念和区别是什么 前端框架和库都是前端开发中常见的概念,它们的区别在于它们所解决的问题不同. 1.1.前端框架(Framework)是 ...
- 学习react前端框架dva
dva 是由阿里架构师 sorrycc 带领 team 完成的一套前端框架,在作者的 github 里是这么描述它的:"dva 是 react 和 redux 的最佳实践". 一. ...
- 2017html5框架排名,2017年最主流前端框架比较:Angular、React 和 Vue
如果你是一名前端开发人员,或者是想要学习web前端开发技术的小伙伴,必须要了解的这三款最主流的前端框架.不仅可以帮助你拿到高薪,也能够提升你的编程思想. 目前前端开发技术主要可以分成四个方面: 1.前 ...
最新文章
- Adobe源码泄漏?3行代码搞定,Flash动画无缝导入Android/iOS/cocos2dx(二)
- 语言中出现蘌ress_【语言发育迟缓,10大表现不能忽视?】
- 重新想象 Windows 8 Store Apps (10) - 控件之 ScrollViewer 特性: Chaining, Rail, Inertia, Snap, Zoom...
- mysql行列转换_Excel、SQL、Python分别实现行列转换
- X11: Linux跨网络运行XWindow程序
- 转:Linux搭建git私服
- android菱形imageview,ios – 在UICollectionView中,UIImageView应该是圆形视图而不是菱形...
- 李飞飞:为什么计算机视觉对机器人如此重要?
- redis中各种数据类型对应的jedis操作命令
- Swiper学习之三---swiper的配置选项 ②:Free模式和Effects切换效果
- 数据结构专题二:2.6链表删除结点
- 将图片文件通过byte[]字节数组Base64加密后给前端显示
- 小菜学前端day02(学习笔记)
- php视频转码hls,GitHub - wanglimeng/ffmpeg-demo: 使用 ffmpeg 实现视频转码。
- html a 按钮效果图,水晶按钮_html/css_WEB-ITnose
- java组合算法应用:购物满减(任意数字组合相加在某个范围内)
- 【数据采集平台】教程-单页面采集
- 数据库SQL入门学习
- 大数据基础篇~JavaSE第三章
- 吃饱没事做之——爬楼梯题复杂化
热门文章
- 表单的ajax填入问题
- jquery 通过submit()方法 提交表单示例
- 自然语言10_分类与标注
- CSS入门学习(转)
- DOM 节点的创建、删除、替换
- python3 shutil模块
- 机器字长、存储字长、指令字长
- Kylin报错classnotfound:org.apache.hadoop.hive.serde2.typeinfo.typeInfo
- matlab cell向量匹配向量,根据2个cell格式数据中的某二列进行匹配并合并
- linux raid autodetect,软raid的建立