一、React概述

React是一个是一个开源的js库,用来为数据渲染视图的,由facebook,Instagram社区维护的。(例如美团、阿里、airbnb都在使用React开发)

为什么会出现React:

频繁的数据操作-->① 大量的DOM操作(自动操作DOM);②逻辑会比较复杂(状态与内容对应起来)

React发展历史:

2011年 react受php当中xhp框架的影响,部署在facebook的newsfeed;

2012年 Instagram;

2013年 React宣布在JSConf开源;

2014年 成为一个github(托管开源项目网站)旗舰级的项目;

2015年 在jsConf,ReactNative技术实现原生开发当中的ui的展现;

React的特点:

①声明式的设计:轻松的描述应用;②高效:虚拟DOM结合算法保证最大限度减少与DOM的交互;③灵活:不是框架,而是一个非常小的库可以搭配ui库、js框架等去使用;④组件:React构建视图的基本单位;⑤单项数据流;⑥状态: 内容与状态对应起来;⑦JSX:js语法的扩展 允许在js中写HTML

React的相关网址:
reactjs.com  --> facebook.github.io/react
https://www.gitbook.com/book/hulufei/react-tutorial/details

问题:

①React 不支持IE8以下的浏览器
②如果你的应用或者站点 不需要频繁的更新页面 -->使用React 实现很小的功能,需要编写很多代码
③React 年轻的库,需要开发者去造轮子
④极大的减慢你的速度 react state props

二、React的核心思想和概念

React的核心思想:封装组件->好处:提高代码的复用率,降低代码的复杂度,提高开发速度,提高代码的质量。各个组件,维护自己的状态和UI,当状态改变,自动更新组件

React的概念:①组件;②JSX js的扩展:javaScriptXml并不是新的语言。React必须使用jsx的语法,建议我们使用。特点:支持在js中编写html,在使用组件时管理组件本身的数据和视图;③Virtual DOM:大面积操作DOM,性能会有问题,react实现虚拟DOM,组件真实DOM结构映射到虚拟DOM,在虚拟DOM上实现一个DOM算法,当需要更新组件时,会通过diff算法找到需要变更的DOM节点,然后再去更新。真实DOM节点--》元素;虚拟DOM节点--》组件;④数据流:单项数据流,状态与内容;

三、搭建React的开发环境、使用React

①方式一:引入react.js react-dom.js browser.js 三个js文件

ReactDOM.render(渲染的内容,渲染的元素);是React最基础方法,用于将模板转为html语言,插入到指定的DOM节点;

②方式二:CLI命令行

JSX基本语法:①遇到HTML标签 (<),使用HTML来解析;②遇到代码块({}),使用js来解析;③注释,{/*这是一个注释语句*/}

 组件:

创建组件:

        

注意:①React是根据组件的名称的首字母是否大写,判断是组件还是普通的html标签;

   ②组件类 在render返回的时候,只能有一个顶层标签,否则会出问题(顶层标签的元素在return时是不能换行的)

复合组件:通过创建多个组件,来合成一个组件(复合组件),把组件的不同功能进行分离。

 props

组件的用法 添加任意属性

<MainComponent userName="Tom"/>

this.props.userName

this.props对象的属性与组件的属性是一一对应的。

this.props.children 表示所有的子节点,返回值有3种(①没有子节点undefined ②一个子节点object ③多个子节点array);

React.Children.map(this.props.children,function(child){})

ref

虚拟DOM-->组件

组件并不是真实的DOM节点,内存中的数据结构,也就是虚拟DOM。如果从组件获取真实DOM的节点,-->ref属性

<input type='text'  ref='inputTxt'/>
function(){ this.refs.inputTxt-->拿到真实的DOM节点}

    控制台输出--》

React库的更多相关文章

  1. 20.react库 入门

    vue插件: 使用方式:Vue.use(插件名称); {}/function 1.对象 export default { install(Vue,options){ } } 2.函数 export d ...

  2. React库protypes属性

    Prop 验证 随着应用不断变大,保证组件被正确使用变得非常有用.为此我们引入propTypes.React.PropTypes 提供很多验证器 (validator) 来验证传入数据的有效性.当向 ...

  3. 如何评价 React 实现的前端 UI 库 material-ui?

    作者:知乎用户链接:https://www.zhihu.com/question/51040975/answer/208582603来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请 ...

  4. React 入门教程

    React 起源于Facebook内部项目,是一个用来构建用户界面的 javascript 库,相当于MVC架构中的V层框架,与市面上其他框架不同的是,React 把每一个组件当成了一个状态机,组件内 ...

  5. 构建通用的 React 和 Node 应用

    这是一篇非常优秀的 React 教程,这篇文章对 React 组件.React Router 以及 Node 做了很好的梳理.我是 9 月份读的该文章,当时跟着教程做了一遍,收获很大.但是由于时间原因 ...

  6. React 高级指南小记

    接上篇,还是笔记,还是干货. 深入 JSX 如果使用 JSX 表达式 <Foo />,Foo 必须在范围内,因为这些标签被编译为对指定变量的直接引用. 由于 JSX 编译为对 React. ...

  7. React学习系列一

    系列学习react 翻译地址 https://scotch.io/tutorials/learning-react-getting-started-and-concepts 我是初学者,英语也不是很好 ...

  8. 初识React

    React 是Facebook开源的一个用于构建用户界面的Javascript库,已经 应用于Facebook及旗下Instagram React专注于MVC架构中的V,即视图 React引入了 虚拟 ...

  9. React学习一

    一.运行起来react 1.引入react库 引入对应的js即可,第三方cdn引入 <script src="https://cdnjs.cloudflare.com/ajax/lib ...

随机推荐

  1. 11、手把手教你Extjs5(十一)模块界面的总体设计

    上一节中设计了一些模块自定义中用到的要素,为了直观起见,这一节先建立一个模块的主界面.看过我 模块管理常规功能自定义系统的设计与实现 博客的人应该会有所了解了.一个模块的主界面是一个Grid,在其上方 ...

  2. js中,怎么解决cookie里面中文乱码问题

    呵呵,我查了百度和谷歌,都没找到解决方案,但是,最终直接结合两个函数就可以了,哈哈哈,开心ing function getCookie(name) { var prefix = name + &quo ...

  3. (C#)利用Aspose.Cells组件导入导出excel文件

    Aspose.Cells组件可以不依赖excel来导入导出excel文件: 导入: public static System.Data.DataTable ReadExcel(String strFi ...

  4. S3C2440外部中断系统详解

    个中断源的请求.提供这些中断源的是内部外设,如DMA控制器.UART.IIC等等.在这些中断源中,UARTn.AC97和EINTn中断对于中断控制器而言是“或”关系.任意一个中断发生都会触发总中断 当 ...

  5. 部分网站允许空白referer的防盗链图片的js破解代码

    Reference: http://www.114390.com/article/27125.htm Javascript源码: 复制代码代码如下: function showImg( url ) { ...

  6. IOS开发中如何判断程序第一次启动(根据判断结果决定是否显示新手操作引导)

    IOS开发中如何判断程序第一次启动 在软件下载安装完成后,第一次启动往往需要显示一个新手操作引导,来告诉用户怎么操作这个app,这就需要在程序一开始运行就判断程序是否第一次启动,如果是,则显示新手操作 ...

  7. Mysql和Oracle的一些语法区别

    作为一个有追求的程序猿,当然要不断的学习,巴拉巴拉巴拉...好了,贴一个网址给大家,哈哈 MySQL与Oracle 差异比较:http://www.cnblogs.com/HondaHsu/p/364 ...

  8. Maven deploy时报Fatal error compiling: tools.jar not found错误的问题处理

    摘自:http://blog.csdn.net/achilles12345/article/details/19046061 在Eclipse环境下,使用Maven进行deploy时发现报了该错误:F ...

  9. Leetcode 181. Employees Earning More Than Their Managers

    The Employee table holds all employees including their managers. Every employee has an Id, and there ...

  10. Struts1、WebWork、Struts2介绍

    一.Struts1 1.Struts1原理简介 Struts1框架以ActionServlet作为控制器核心,整个应用由客户端请求驱动.当客户端向Web应用发送请求时,请求被Struts1的核心控制器 ...