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 相关文章推荐
强悍无比的WEB开发好助手FireBug(Firefox Plugin)
Jan 16 Javascript
Ajax执行顺序流程及回调问题分析
Dec 10 Javascript
jquery中.add()的使用分析
Apr 26 Javascript
全面理解面向对象的 JavaScript(来自ibm)
Nov 10 Javascript
javascript中对变量类型的判断方法
Aug 09 Javascript
bootstrap table 表格中增加下拉菜单末行出现滚动条的快速解决方法
Jan 05 Javascript
原生JS实现图片翻书效果
Feb 16 Javascript
jQuery点击头像上传并预览图片
Feb 23 Javascript
js实现股票实时刷新数据案例
May 14 Javascript
基于JavaScript实现多级菜单效果
Jul 25 Javascript
解决node修改后需频繁手动重启的问题
May 13 Javascript
Vue CLI3 开启gzip压缩文件的方式
Sep 30 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 adodb操作mysql数据库
2009/03/19 PHP
ThinkPHP中I(),U(),$this->post()等函数用法
2014/11/22 PHP
jquery 与NVelocity 产生冲突的解决方法
2011/06/13 Javascript
jQuery Tab插件 用于在Tab中显示iframe,附源码和详细说明
2011/06/27 Javascript
浅谈JavaScript中null和undefined
2015/07/09 Javascript
微信小程序 wx.request(object) API详解及实例代码
2016/09/30 Javascript
js判断是否是手机页面
2017/03/17 Javascript
JS实现的简单表单验证功能示例
2017/10/13 Javascript
在vue-cli项目中使用bootstrap的方法示例
2018/04/21 Javascript
微信小程序前端自定义分享的实现方法
2019/06/13 Javascript
基于Node.js搭建hexo博客过程详解
2019/06/25 Javascript
微信小程序自定义模态弹窗组件详解
2019/12/24 Javascript
小程序自定义模板实现吸顶功能
2020/01/08 Javascript
js实现3D粒子酷炫动态旋转特效
2020/09/13 Javascript
Python字符串的encode与decode研究心得乱码问题解决方法
2009/03/23 Python
python操作gmail实例
2015/01/14 Python
利用Pandas 创建空的DataFrame方法
2018/04/08 Python
python实现搜索文本文件内容脚本
2018/06/22 Python
用python实现k近邻算法的示例代码
2018/09/06 Python
关于不懂Chromedriver如何配置环境变量问题解决方法
2019/06/12 Python
python:按行读入,排序然后输出的方法
2019/07/20 Python
python简单实现最大似然估计&scipy库的使用详解
2020/04/15 Python
django 获取字段最大值,最新的记录操作
2020/08/09 Python
Python实现爬取网页中动态加载的数据
2020/08/17 Python
python中温度单位转换的实例方法
2020/12/27 Python
HTML5+lufylegend实现游戏中的卷轴
2016/02/29 HTML / CSS
详解如何解决H5开发使用wx.hideMenuItems无效果不生效
2021/01/20 HTML / CSS
ECCO爱步加拿大官网:北欧丹麦鞋履及皮具品牌
2017/07/08 全球购物
幼儿园实习自我鉴定
2013/12/15 职场文书
优秀毕业生推荐信范文
2014/03/07 职场文书
个人廉洁自律承诺书
2014/03/27 职场文书
Golang 实现超大文件读取的两种方法
2021/04/27 Golang
使用Pytorch训练two-head网络的操作
2021/05/28 Python
Python查找算法的实现 (线性、二分,分块、插值查找算法)
2022/04/24 Python
Python实现简单得递归下降Parser
2022/05/02 Python
Spring Boot优化后启动速度快到飞起技巧示例
2022/07/23 Java/Android