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 相关文章推荐
永不消失的title提示代码
Feb 15 Javascript
jQuery Tools tooltip使用说明
Jul 14 Javascript
js iframe跨域访问(同主域/非同主域)分别深入介绍
Jan 24 Javascript
JS子父窗口互相操作取值赋值的方法介绍
May 11 Javascript
javascript使用百度地图api和html5特性获取浏览器位置
Jan 10 Javascript
JS操作iframe里的dom(实例讲解)
Jan 29 Javascript
深入理解JavaScript系列(38):设计模式之职责链模式详解
Mar 04 Javascript
简易的JS计算器实现代码
Oct 18 Javascript
HTML页面定时跳转方法解析(2种任选)
Dec 22 Javascript
Node对CommonJS的模块规范
Nov 06 Javascript
JS localStorage存储对象,sessionStorage存储数组对象操作示例
Feb 15 Javascript
Vue $attrs & inheritAttr实现button禁用效果案例
Dec 07 Vue.js
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
改进的IP计数器
2006/10/09 PHP
PHPWind与Discuz截取字符函数substrs与cutstr性能比较
2011/12/05 PHP
php中通过正则表达式下载内容中的远程图片的函数代码
2012/01/10 PHP
php目录拷贝实现方法
2015/07/10 PHP
vmware linux系统安装最新的php7图解
2019/04/14 PHP
laravel 去掉index.php伪静态的操作方法
2019/10/12 PHP
jquery blockUI 遮罩不能消失与不能提交的解决方法
2011/09/17 Javascript
ASP.NET jQuery 实例17 通过使用jQuery validation插件校验ListBox
2012/02/03 Javascript
jQuery javaScript捕获回车事件(示例代码)
2013/11/07 Javascript
js QQ客服悬浮效果实现代码
2014/12/12 Javascript
tuzhu_req.js 实现仿百度图片首页效果
2015/08/11 Javascript
深入学习JavaScript中的原型prototype
2015/08/13 Javascript
用jQuery实现可输入多选下拉组合框实例代码
2017/01/18 Javascript
ES6中字符串string常用的新增方法小结
2017/11/07 Javascript
vue2.0使用swiper组件实现轮播效果
2017/11/27 Javascript
vue组件表单数据回显验证及提交的实例代码
2018/08/30 Javascript
JS实现拼图游戏
2021/01/29 Javascript
VUE异步更新DOM - 用$nextTick解决DOM视图的问题
2020/11/06 Javascript
[01:07]2015国际邀请赛 中国区预选赛精彩回顾
2015/06/15 DOTA
使用简单工厂模式来进行Python的设计模式编程
2016/03/01 Python
python中pandas.DataFrame的简单操作方法(创建、索引、增添与删除)
2017/03/12 Python
python+opencv实现的简单人脸识别代码示例
2017/11/14 Python
Django项目实战之用户头像上传与访问的示例
2018/04/21 Python
Django + Uwsgi + Nginx 实现生产环境部署的方法
2018/06/20 Python
numpy.linspace函数具体使用详解
2019/05/27 Python
基于Keras中Conv1D和Conv2D的区别说明
2020/06/19 Python
Shopee新加坡:东南亚与台湾电商平台
2019/01/25 全球购物
美国最好的葡萄酒网上商店:Wine Library
2019/11/02 全球购物
商务英语毕业生自荐信范文
2013/11/08 职场文书
面试后感谢信怎么写
2014/02/01 职场文书
2014年社会实践活动总结范文
2014/04/29 职场文书
建筑院校毕业生求职信
2014/06/13 职场文书
2014年秋季开学典礼致辞
2014/08/02 职场文书
陪护人员误工证明
2015/06/24 职场文书
2016年小学生寒假总结
2015/10/10 职场文书
创业方案:赚钱的烧烤店该怎样做?
2019/07/05 职场文书