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 相关文章推荐
Domino中运用jQuery读取视图内容的方法
Oct 21 Javascript
判断iframe是否加载完成的完美方法
Jan 07 Javascript
ExtJs中gridpanel分组后组名排序实例代码
Dec 02 Javascript
用JavaScript实现类似于ListBox功能示例代码
Mar 09 Javascript
ajax提交表单实现网页无刷新注册示例
May 08 Javascript
js中string转int把String类型转化成int类型
Aug 13 Javascript
简介JavaScript中search()方法的使用
Jun 06 Javascript
JS实现搜索关键词的智能提示功能
Jul 07 Javascript
Angular-UI Bootstrap组件实现警报功能
Jul 16 Javascript
解决vue-cli webpack打包后加载资源的路径问题
Sep 25 Javascript
vue实现微信获取用户信息的方法
Mar 21 Javascript
vue router 通过路由来实现切换头部标题功能
Apr 24 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
Zend Guard一些常见问题解答
2008/09/11 PHP
PHP 引用文件技巧
2010/03/02 PHP
PHP STRING 陷阱原理说明
2010/07/24 PHP
PHP超级全局变量数组小结
2012/10/04 PHP
thinkPHP框架实现图像裁剪、缩放、加水印的方法
2017/03/14 PHP
永不消失的title提示代码
2007/02/15 Javascript
UpdatePanel和Jquery冲突的解决方法
2013/04/01 Javascript
js关于精确计算和数值格式化以及直接引js文件
2014/01/28 Javascript
使用FlexiGrid实现Extjs表格效果方法分享
2014/12/16 Javascript
js检测判断日期大于多少天的方法
2015/05/04 Javascript
jQuery替换textarea中换行的方法
2015/06/10 Javascript
jQuery zclip插件实现跨浏览器复制功能
2015/11/02 Javascript
js ajaxfileupload.js上传报错的解决方法
2016/05/05 Javascript
BootStrap3学习笔记(一)之网格系统
2016/05/20 Javascript
利用原生JS与jQuery实现数字线性变化的动画
2017/02/24 Javascript
利用node.js写一个爬取知乎妹纸图的小爬虫
2017/05/03 Javascript
用户管理的设计_jquery的ajax实现二级联动效果
2017/07/13 jQuery
在vue中获取微信支付code及code被占用问题的解决方法
2019/04/16 Javascript
[01:02:46]VGJ.S vs NB 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
跟老齐学Python之用Python计算
2014/09/12 Python
Python中logging模块的用法实例
2014/09/29 Python
Python 专题五 列表基础知识(二维list排序、获取下标和处理txt文本实例)
2017/03/20 Python
django允许外部访问的实例讲解
2018/05/14 Python
Python3.5以上版本lxml导入etree报错的解决方案
2019/06/26 Python
Python整数对象实现原理详解
2019/07/01 Python
Python企业编码生成系统之系统主要函数设计详解
2019/07/26 Python
python 生成器和迭代器的原理解析
2019/10/12 Python
keras:model.compile损失函数的用法
2020/07/01 Python
Python爬虫中Selenium实现文件上传
2020/12/04 Python
全球虚拟主机商:HostGator
2017/02/06 全球购物
光声世纪笔试题目
2012/08/25 面试题
linux面试题参考答案(4)
2013/01/28 面试题
农林环境专业求职信
2014/03/13 职场文书
小学优秀教师事迹材料
2014/12/16 职场文书
颐和园导游词400字
2015/01/30 职场文书
写好求职信的技巧解密
2019/05/14 职场文书