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 相关文章推荐
QQ邮箱的一个文本编辑器代码
Mar 14 Javascript
用JS控制回车事件的代码
Feb 20 Javascript
用客户端js实现带省略号的分页
Apr 27 Javascript
扩展IE中一些不兼容的方法如contains、startWith等等
Jan 09 Javascript
js怎么覆盖原有方法实现重写
Sep 04 Javascript
jQuery.prop() 使用详解
Jul 19 Javascript
基于jQuery实现在线选座之高铁版
Aug 24 Javascript
Jquery常用的方法汇总
Sep 01 Javascript
JavaScript 判断一个对象{}是否为空对象的简单方法
Oct 09 Javascript
JS简单实现自定义右键菜单实例
May 31 Javascript
微信小程序通过保存图片分享到朋友圈功能
May 24 Javascript
vue vant中picker组件的使用
Nov 03 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中文件上传的一个问题
2010/09/04 PHP
PHP错误抑制符(@)导致引用传参失败Bug的分析
2011/05/02 PHP
php使用正则表达式进行字符串搜索的方法
2015/03/23 PHP
android上传图片到PHP的过程详解
2015/08/03 PHP
php加密之discuz内容经典加密方式实例详解
2017/02/04 PHP
一些常用的JS功能函数代码
2009/06/23 Javascript
Javascript 文件夹选择框的两种解决方案
2009/07/01 Javascript
jQuery 性能优化手册 推荐
2010/02/23 Javascript
Javascript调用C#代码
2011/01/17 Javascript
深入分析Javascript事件代理
2016/01/30 Javascript
Jquery EasyUI实现treegrid上显示checkbox并取选定值的方法
2016/04/29 Javascript
创建一个类Person的简单实例
2016/05/17 Javascript
浅谈js之字面量、对象字面量的访问、关键字in的用法
2016/11/20 Javascript
JavaScript的变量声明提升问题浅析(Hoisting)
2016/11/30 Javascript
jquery pagination分页插件使用详解(后台struts2)
2017/01/22 Javascript
jQuery中layer分页器的使用
2017/03/13 Javascript
详解基于webpack和vue.js搭建开发环境
2017/04/05 Javascript
JS设置随机出现2个数字的实例代码
2017/07/19 Javascript
JS获取input[file]的值并显示在页面的实现方法
2018/03/09 Javascript
vue-router重定向和路由别名的使用讲解
2019/01/19 Javascript
使用 node.js 模仿 Apache 小部分功能
2019/07/07 Javascript
vue点击标签切换选中及互相排斥操作
2020/07/17 Javascript
浅谈vue获得后台数据无法显示到table上面的坑
2020/08/13 Javascript
[01:22]DOTA2神秘商店携大量周边降临完美大师赛
2017/11/07 DOTA
python实现查找excel里某一列重复数据并且剔除后打印的方法
2015/05/26 Python
老生常谈python的私有公有属性(必看篇)
2017/06/09 Python
Python用 KNN 进行验证码识别的实现方法
2018/02/06 Python
Python常用模块之requests模块用法分析
2019/05/15 Python
使用python实现微信小程序自动签到功能
2020/04/27 Python
写出二分查找算法的两种实现
2013/05/13 面试题
简历中自我评价分享
2013/10/09 职场文书
教师自我反思材料
2014/02/14 职场文书
我的求职择业计划书
2014/04/04 职场文书
驳回起诉裁定书
2015/05/19 职场文书
初中思品教学反思
2016/02/20 职场文书
利用Python多线程实现图片下载器
2022/03/25 Python