React(上)
一、React基础
1.React模板
凡是使用JSX的地方,要加上type="text/babel"。引用三个库react.js是React的核心库,react-dom.js提供与DOM相关的功能,Brower.js将JSK语法转为JavaScipt语法。
2.ReactDOM.render()方法
用于将模板转为HTML语言,并插入指定的DOM节点。
jsx语法:js和html混着写,js代码写在花括号内。
二、组件与状态机
1.组件
React可以像插入HTML标签一样,将组件插入到网页中。React.createClass方法用于生成一个组件类。
2.this.props对象
props是组件的标签属性和子节点构成的集合
children是组件标签的所有子节点,对于子节点的渲染,reacty用this.props.children,当前组件没有子节点,它是undefined,如果有一个子节点,它是object,如果多个子节点,数据类型就是array;我们可以用React.Children.map来遍历子节点,而不用担心this.props.children的数据类型。
3.propType
组件的属性可以接受任意值,字符串、对象、函数等都可以,组件类的PropType属性,就是用来验证组件实例的属性是否符合要求。
getDefaultProps方法可以设置组件属性的默认值。但是这个方法必须要return出的obj。
4.获取真实的DOM
组件并不是真实的DOM节点,而是存在于内存中的一种数据结构,叫做虚拟DOM。只有当它插入文档以后,才会变成真实的DOM。
从组件获取真实DOM节点,用ref属性。
第一步:将别获取元素加上ref属性并赋值;
第二步:通过控制台输出this.refs;
用this.refs.[refname]来获取真实的DOM节点。
5.this.state对象
React将组件看成一个状态机,一开始有一个初始状态,然后用户互动,导致状态发生变化,从而触发重新渲染。
区别:this.props表示一旦定义无法改变的特性,this.state是会随用户的互动而变化的特性。
getInitialState方法用于定义初始状态,可以通过this,state属性读取。this.setState方法修改状态值。
三、表单与生命周期
1.表单
用户在表单填入内容,属于用户和组件的互动,不能用this.props读取。
文本输入框的值,不能用this.props.value读取,而是要定义一个onChange事件的回调函数,通过even.target这个事件源的value属性读取用户输入的值(event,target,value),textarea元素,select元素,radio元素都属于这种情况。
2.组件的生命周期
react组件的生命周期分为三个部分:
Mounting:已插入真实DOM
Updating:正在被重新渲染
UN某难听:已移出真实DOM
两种处理函数:will函数在进入状态之前调用,did函数在进入状态之后调用。
componentDidMount()已插入真实的DOM后执行的函数。
3.ajax
组件的数据来源,通常是通过Ajax请求从服务器获取,可以使用componentDidMount方法设置ajax请求,等到请求成功,再用this.setState方法重新渲染UI。
React(上)的更多相关文章
- React与ES6(四)ES6如何处理React mixins
React与ES6系列: React与ES6(一)开篇介绍 React和ES6(二)ES6的类和ES7的property initializer React与ES6(三)ES6类和方法绑定 React ...
- Facebook React完全解析
2004年,对于前端社区来说,是里程碑式的一年.Gmail横空出世,它带来基于前端渲染的原生应用级别的体验,相对于之前的服务端渲染网页可谓提升了一个时代,触动了用户的G点.自此,前端渲染的网站成为无数 ...
- 探索React生态圈
原文地址:http://www.csdn.net/article/2015-08-04/2825370-react 2004年,对于前端社区来说,是里程碑式的一年.Gmail横空出世,它带来基于前端渲 ...
- [转] React同构思想
React比较吸引我的地方在于其客户端-服务端同构特性,服务端-客户端可复用组件,本文来简单介绍下这一架构思想. 出于篇幅原因,本文不会介绍React基础,所以,如果你还不清楚React的state/ ...
- 【react】利用prop-types第三方库对组件的props中的变量进行类型检测
1.引言--JavaScript就是一个熊孩子 1.1对于JSer们来说,js是自由的,但同时又有许多让人烦恼的地方.javascript很多时候就是这么一个熊孩子,他很多时候并不会像C和java ...
- 5.前端基于react,后端基于.net core2.0的开发之路(5) 配置node层,session设置、获取,请求拦截
1.总结一下 今年,2月份从深圳来到广州,工作到现在,回头看,完成的项目4-5个,公司基本没有懂技术的领导,所以在技术选型上,我们非常的自由,所以内心一直都不满足现状,加上一起工作的小伙伴给力(哈哈哈 ...
- react .net core 发布 Access-Control-Allow-Origin Cors
本案例用IIS部署 1. 在react上先publish: npm run build 生成了build文件,在此文件里添加web.config,注意httpProtocol是用来跨域的. <? ...
- 从 0 到 1 实现 React 系列 —— 5.PureComponent 实现 && HOC 探幽
本系列文章在实现一个 cpreact 的同时帮助大家理顺 React 框架的核心内容(JSX/虚拟DOM/组件/生命周期/diff算法/setState/PureComponent/HOC/...) ...
- React+Webpack+Webstorm开发环境搭建
需要安装的软件 node.js npm包管理 Webstorm 由于6.3.0版本之后会自带npm的包管理所以不需要单独的安装npm nodejs(包含npm)安装在默认路径C:\Program Fi ...
- react项目开发中遇到的问题
前言 作为一个前端爱好者来说,都想在react上一试生手,那么在搭建react项目开发时,肯定会有这样或者那样的问题,尤其是对初学者来说,下面就个人在开发过程中遇到的问题总结一下,好在有google帮 ...
随机推荐
- request请求携带证书,如:微信企业零钱付款
const Promise = require('bluebird') const request = Promise.promisifyAll(require('request')) const w ...
- struggle in the ACM(一)
struggle in the ACM(一) 2018/11/3 成为一名ACMer以后,第一次参加ACM正式比赛,果然是打铁了~ 回想起整场比赛的前前后后,其实拿到现在这个成绩,真的是情理之中却也是 ...
- 银行卡号正则,jq 正则,php正则
1 jq正则 /** *银行号码正则 */ function luhmCheck(bankno){ var lastNum=bankno.substr(bankno.length-1,1);//取出最 ...
- 阿里云 ACP 考试学习过程分享
目录 考证意义 学习方法 ACP 报名 学习安排[重要] 考试当天 其他 经验贴 考证意义 证多不压身,证比项目经历更具有说服力,证是行业的标准认证.更多时候,是有证的人说,"证其实不重要& ...
- mysql 5.7.21 解压版安装配置方法图文教程
引用:https://www.jb51.net/article/140951.htm 1.首先,你要下载MySQL解压版,下载地址,图解: 2.解压安装包,根据自己的喜好选择路径,我选择的路径是C:\ ...
- java_xml_解析
xml解析的两种的基本方式 1:SAX解析:一行一行的解析,不回头 2:DOM解析:将整个XML以树状读到内存中,然后需要哪一部分就取哪一部分 SAX解析: 基于java的步骤: //1.获取解析工厂 ...
- jmeter 入门学习-通过代理录制测试脚本
通过jmeter代理录制脚本后,会产生大量的无用的请求,尽管在代理中已经过滤了一部分图片或者CSS.JS文件. 手动查看主要的请求:这里主要关注登陆请求,要确定有效的URL请求 删除除/Login.a ...
- Express全系列教程之(八):session的基本使用
一.关于session session是另一种记录客户状态的机制,与cookie保存在客户端浏览器不同,session保存在服务器当中:当客户端访问服务器时,服务器会生成一个session对象,对象中 ...
- OO第一单元总结与心得体会
一.结构度量 1. UML类图 第一次作业 第二次作业 第三次作业 2. 复杂度分析 (1)方法复杂度 ev, iv, v这几栏,分别代指基本复杂度(Essential Complexity (e ...
- TNS-12560: TNS: 协议适配器错误同时伴有TNS-00584: 有效节点检查配置错误的解决方法
:修改/home/oracle/app/product/11.2.0/db_1/network/admin/sqlnet.ora(与listener.ora同一目录) 增加白名单: tcp.valid ...