版权声明:本文为博主原创文章,未经博主允许不得转载。

二者区别

stateprops 主要的区别在于子组件通过props来传递数据,一旦外部传入数据后, props 不可改变。
state作为状态私有,受控于当前组件,可以根据与用户交互来改变,但也不能随意改变。

React props使用

  1. 新建一个组件,组件内创建使用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使用

  1. 新建一个组件,需要额外增加使用构造方法constructor,携带参数props,constructor内部使用super(props)继承该方法参数,在底部进行state值的设置。
    constructor(props){super(props)this.state = {likes:0}}
复制代码
  1. 执行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>)}
复制代码
  1. 进行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相关推荐

  1. (一)导学(前端框架面试-聚焦Vue/React/Webpack)

    导学 全面 高效 学习前提 前端常见面试流程 知识点介绍 Vue框架部分 React框架部分 工具部分 项目设计 讲解方式 注意事项 全面 全面的知识体系 大量的面试真题 完整的技术面试流程 高效 直 ...

  2. 前端框架React Js入门教程【转】

    现在最热门的前端框架有AngularJS.React.Bootstrap等.自从接触了ReactJS,ReactJs的虚拟DOM(Virtual DOM)和组件化的开发深深的吸引了我,下面来跟我一起领 ...

  3. 2020年最新前端框架大全,Web工程师人手一份!

    今天跟大家分享一些目前比较热门新鲜度靠前的50款前端工具,希望对你有所帮助. 一.构建工具 1. Parcel 地址:https://parceljs.org Parcel是一款极速零配置WEB应用打 ...

  4. 50个好用的前端框架,千万收好以留备用!

    来源 | https://www.jianshu.com/p/182b69e54fe8 今天跟你分享一些目前比较热门新鲜度靠前的50款前端工具,希望对你有所帮助. 一.构建工具 1. Parcel 地 ...

  5. 2020年最新前端框架大全,Web工程师人手一份

    今天跟大家分享一些目前比较热门新鲜度靠前的50款前端工具,希望对你有所帮助. 一.构建工具 1. Parcel 地址:https://parceljs.org Parcel是一款极速零配置WEB应用打 ...

  6. 前端框架的新星-Hyperapp 1.0简介

    原文链接:https://hackernoon.com/introducing-hyperapp-1-0-dbf4229abfef 在这个React, Vue, Angular三足鼎立的前端框架圈(其 ...

  7. 理解前端框架、前端库,两者有什么区别

    一.前端框架(Framework).前端库(Library)两者的概念和区别是什么 前端框架和库都是前端开发中常见的概念,它们的区别在于它们所解决的问题不同. 1.1.前端框架(Framework)是 ...

  8. 学习react前端框架dva

    dva 是由阿里架构师 sorrycc 带领 team 完成的一套前端框架,在作者的 github 里是这么描述它的:"dva 是 react 和 redux 的最佳实践". 一. ...

  9. 2017html5框架排名,2017年最主流前端框架比较:Angular、React 和 Vue

    如果你是一名前端开发人员,或者是想要学习web前端开发技术的小伙伴,必须要了解的这三款最主流的前端框架.不仅可以帮助你拿到高薪,也能够提升你的编程思想. 目前前端开发技术主要可以分成四个方面: 1.前 ...

最新文章

  1. Adobe源码泄漏?3行代码搞定,Flash动画无缝导入Android/iOS/cocos2dx(二)
  2. 语言中出现蘌ress_【语言发育迟缓,10大表现不能忽视?】
  3. 重新想象 Windows 8 Store Apps (10) - 控件之 ScrollViewer 特性: Chaining, Rail, Inertia, Snap, Zoom...
  4. mysql行列转换_Excel、SQL、Python分别实现行列转换
  5. X11: Linux跨网络运行XWindow程序
  6. 转:Linux搭建git私服
  7. android菱形imageview,ios – 在UICollectionView中,UIImageView应该是圆形视图而不是菱形...
  8. 李飞飞:为什么计算机视觉对机器人如此重要?
  9. redis中各种数据类型对应的jedis操作命令
  10. Swiper学习之三---swiper的配置选项 ②:Free模式和Effects切换效果
  11. 数据结构专题二:2.6链表删除结点
  12. 将图片文件通过byte[]字节数组Base64加密后给前端显示
  13. 小菜学前端day02(学习笔记)
  14. php视频转码hls,GitHub - wanglimeng/ffmpeg-demo: 使用 ffmpeg 实现视频转码。
  15. html a 按钮效果图,水晶按钮_html/css_WEB-ITnose
  16. java组合算法应用:购物满减(任意数字组合相加在某个范围内)
  17. 【数据采集平台】教程-单页面采集
  18. 数据库SQL入门学习
  19. 大数据基础篇~JavaSE第三章
  20. 吃饱没事做之——爬楼梯题复杂化

热门文章

  1. 表单的ajax填入问题
  2. jquery 通过submit()方法 提交表单示例
  3. 自然语言10_分类与标注
  4. CSS入门学习(转)
  5. DOM 节点的创建、删除、替换
  6. python3 shutil模块
  7. 机器字长、存储字长、指令字长
  8. Kylin报错classnotfound:org.apache.hadoop.hive.serde2.typeinfo.typeInfo
  9. matlab cell向量匹配向量,根据2个cell格式数据中的某二列进行匹配并合并
  10. linux raid autodetect,软raid的建立