React快速入门教程


Posted in Javascript onJanuary 17, 2017

简介

Facebook官网介绍:React 是一个用来构建用户界面的 JavaScript 库。相当于 MVC 架构的 V 层。

React 的核心思想是:封装组件,各个组件维护自己的状态和UI,当状态变更,自动重新渲染整个组件。

React的优点(React为什么这么火?):

React快速入门教程

组成

React构建界面的三要点:组件、路由、状态管理。

React 的核心内容:JSX和虚拟 DOM。

一个最基本的 React 组件由数据和JSX两个主要部分构成,我们先来看看数据。

React快速入门教程

这是一个简单完整的React组件(类),props 主要作用是提供数据来源,可以简单的理解为 props 就是构造函数的参数。 state 唯一的作用是控制组件的表现,用来存放会随着交互变化状态,比如开关状态等。JSX 做的事情就是根据 state 和 props 中的值,结合一些视图层面的逻辑,输出对应的 DOM 结构。

在组件内部,可以通过this.props来访问props

React的一大创新,就是把每一个组件都看成是一个状态机,组件内部通过state来维护组件状态的变化,这也是state唯一的作用。

React快速入门教程

传统 Web App:是直接和DOM交互,由App来控制DOM的构建和渲染、元素属性的读写、事件的注册和销毁等。

React Web App:是通过虚拟DOM来交互。虚拟DOM是在DOM的基础上建立了一个抽象层,我们对数据和状态所做的任何改动,都会被自动且高效的同步到虚拟DOM,最后再批量同步到DOM中。(渲染效率高)

React目前支持的事件列表:

React快速入门教程

生命周期

大体可以分为三个过程:初始化、更新和销毁,在组件生命周期中,随着组件的props或者state发生改变,它的虚拟DOM和DOM表现也将有相应的变化。

一、初始化:

React快速入门教程

解析:

  1. 组件类在声明时,会先调用 getDefaultProps() 方法来获取默认props值,这个方法会且只会在声明组件类时调用一次,这一点需要注意,它返回的默认props由所有实例共享。
  2. 在组件被实例化之前,会先调用一次实例方法 getInitialState() 方法,用于获取这个组件的初始state。
  3. 实例化之后就是渲染,componentWillMount方法会在生成虚拟DOM之前被调用,你可以在这里对组件的渲染做一些准备工作,比如计算目标容器尺寸然后修改组件自身的尺寸以适应目标容器等等。
  4. 接下来就是渲染工作,在这里你会创建一个虚拟DOM用来表示组件的结构。

对于一个组件来说,render 是唯一一个必须的方法。render方法需要满足这几点:

    1)只能通过 this.props 或 this.state 访问数据

    2)只能出现一个顶级组件

    3)可以返回 null、false 或任何 React 组件

    4)不能对 props、state 或 DOM 进行修改

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
在百度知道团队中快速审批新成员的js脚本
Feb 02 Javascript
JavaScript学习笔记之内置对象
Jan 22 Javascript
JavaScript跨浏览器获取页面中相同class节点的方法
Mar 03 Javascript
JavaScript实现向右伸出的多级网页菜单效果
Aug 25 Javascript
拥有一个属于自己的javascript表单验证插件
Mar 24 Javascript
微信JS-SDK坐标位置如何转换为百度地图坐标
Jul 04 Javascript
JQuery之proxy实现绑定代理方法
Aug 01 Javascript
Grunt针对静态文件的压缩,版本控制打包的实例讲解
Sep 29 Javascript
微信小程序swiper组件用法实例分析【附源码下载】
Dec 07 Javascript
详解Node.js模板引擎Jade入门
Jan 19 Javascript
create-react-app修改为多页面支持的方法
May 17 Javascript
微信小程序wx.navigateTo方法里的events参数使用详情及场景
Jan 07 Javascript
javascript操作cookie
Jan 17 #Javascript
vue.js学习笔记:如何加载本地json文件
Jan 17 #Javascript
微信小程序 网络请求(post请求,get请求)
Jan 17 #Javascript
详解微信小程序开发之城市选择器 城市切换
Jan 17 #Javascript
微信小程序实战之运维小项目
Jan 17 #Javascript
vue双向数据绑定原理探究(附demo)
Jan 17 #Javascript
JavaScript中英文字符长度统计方法示例【按照中文占2个字符】
Jan 17 #Javascript
You might like
PHP屏蔽蜘蛛访问代码及常用搜索引擎的HTTP_USER_AGENT
2013/03/06 PHP
利用PHPStorm如何开发Laravel应用详解
2017/08/30 PHP
获取dom元素那些讨厌的位置封装代码
2010/06/23 Javascript
Grid得到选择行数据的方法总结
2011/01/17 Javascript
javascrpt绑定事件之匿名函数无法解除绑定问题
2012/12/06 Javascript
利用jquery包将字符串生成二维码图片
2013/09/12 Javascript
jquery设置text的值示例(设置文本框 DIV 表单值)
2014/01/06 Javascript
js检测输入内容全为空格的方法
2014/05/03 Javascript
谈谈我对JavaScript原型和闭包系列理解(随手笔记6)
2015/12/20 Javascript
jQuery生成假加载动画效果
2016/12/01 Javascript
jQuery实现在HTML文档加载完毕后自动执行某个事件的方法
2017/05/08 jQuery
JS去掉字符串中所有的逗号
2017/10/18 Javascript
jQuery实现鼠标移到某个对象时弹出显示层功能
2018/08/23 jQuery
[38:21]2018DOTA2亚洲邀请赛3月30日 小组赛A组 LGD VS Newbee
2018/03/31 DOTA
[58:00]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant BO3 第二场 2月7日
2021/03/11 DOTA
分享15个最受欢迎的Python开源框架
2014/07/13 Python
python写日志封装类实例
2015/06/28 Python
python开发利器之ulipad的使用实践
2017/03/16 Python
Python 模拟员工信息数据库操作的实例
2017/10/23 Python
python检测主机的连通性并记录到文件的实例
2018/06/21 Python
tensorflow实现加载mnist数据集
2018/09/08 Python
python3.6根据m3u8下载mp4视频
2019/06/17 Python
关于django 1.10 CSRF验证失败的解决方法
2019/08/31 Python
keras之权重初始化方式
2020/05/21 Python
利用django创建一个简易的博客网站的示例
2020/09/29 Python
关于pycharm 切换 python3.9 报错 ‘HTMLParser‘ object has no attribute ‘unescape‘ 的问题
2020/11/24 Python
CSS3制作文字半透明倒影效果的两种实现方式
2014/08/08 HTML / CSS
html5 sessionStorage会话存储_动力节点Java学院整理
2017/07/06 HTML / CSS
Blancsom美国/加拿大:服装和生活用品供应商
2018/07/27 全球购物
高中毕业自我鉴定
2013/12/16 职场文书
教师业务学习制度
2014/01/25 职场文书
房地产广告策划方案
2014/05/15 职场文书
自我推荐信怎么写
2015/03/24 职场文书
因工资原因离职的辞职信范文
2015/05/12 职场文书
订货会主持词
2015/07/01 职场文书
Python还能这么玩之用Python修改了班花的开机密码
2021/06/04 Python