<!DOCTYPE html>
<html>
<head>
<script src="../build/react.js"></script>
<script src="../build/react-dom.js"></script>
<script src="../build/browser.min.js"></script>
</head>
<body>
<div id="example"></div>
<script type="text/babel">
// ** Our code goes here! **
</script>
</body>
</html>

script的标签的type="text/babel"React独有的JSX的语法跟javascript不兼容

三个库文件必须首先加载react.js(核心库),react-dom.js是提供与DOM相关的功能,browser.js的作用的是将JSX语法转为
Javascript的语法

二、最基本的用法ReactDOM.render()

 ReactDOM.render(
<h1>hello world!!</h1>,
document.getElementById("example")
);

三、JSX语法

JSX的基本语法规则,遇到HTML标签(以<开头)用html规则解析
遇到代码块(以{开头)用javascript规则解析

四、组件component
React.createClass方法用于生成一个组件类

 var Hello = React.createClass({
render: function(){
return <h1>hello {this.props.name}</h1>
}
});
ReactDOM.render(
<Hello name="hai"/>
document.getElementById()
);

注意:组件类的第一个字母必须大写,否则会报错,组件类只能包含一个顶层标签否则也会报错

组件的属性可以在组件类的this.props对象上获取

添加组件属性 class属性要写成className for写成hrmlfor (因为for class是javascipt的保留字)

五、this.props.children

getDefaultProps() 方法为 props 设置默认值

this.props的对象属性与组件的属性一一对应 只有一个例外this.props.children它表示组件的所有子节点

this.props.children的值有三种可能
1.如果当前组件木有子节点undefined
2.如果有一个子节点数据类型是object
3.多个子节点的数据类型就是array所以处理this.props.children的时候要小小

六、PropTypes

组件类的PropTypes属性用来验证组件实例的属性是否符合要求

七、获取真是的DOM节点

组件并不是真是的DOM节点,而是存在与内存之中的一种数据结构叫做虚拟DOM

只有当它插入文档以后才会变成真是的dom

react的设计是先修改虚拟的dom在实际发生变化的部分,反映在真是的dom上这种算法叫做DOM diff 可以极大提高网页的性能

表现

从组件获取真实 DOM 的节点,这时就要用到 ref 属性

八、this.state
组件免不了用户互动 react的组件看成一个状态机 ,一开始有一个初始状态,然后用户互动,导致状态变化,从而触发重新

渲染

getInitialState方法用于定义初始状态也就是一个对象,这个对象可以通过 this.state 属性读取。当用户点击组件,导致

状态变化,this.setState 方法就修改状态值,每次修改以后,自动调用 this.render 方法,再次渲染组件。
由于 this.props 和 this.state 都用于描述组件的特性,可能会产生混淆。一个简单的区分方法是,this.props 表示那些

一旦定义,就不再改变的特性,而 this.state 是会随着用户互动而产生变化的特性。

state 和 props 主要的区别在于 props 是不可变的,而 state 可以根据与用户交互来改变。这就是为什么有些容器组件需要定义 state 来更新和修改数据。 而子组件只能通过 state 来传递数据

十一、组件的生命周期

生命周期的三个状态Mounting:已插入真是DOM Updating:正在被重新渲染 Unmounting:已移出真是DOM

React为每个状态提供了两种处理函数 will函数在进入状态之前调用 did函数在进入状态之后调用

三种状态共计五种处理函数

componentWillMount()进入状态之前插入真实DOM
componentDidMount()进入状态之后插入真实DOM

componentWillUpdate(object nextProps,object nextState)

componentDidUpdate(object nextProps,object nextState)

componentWillUnmount()

此外两种特殊状态的处理函数

componentWillReceiveProps(object nextProps):已加载组件收到新的参数时调用

shouldComponentUpdate(object nextProps, object nextState):组件判断是否重新渲染时调用

十一、Ajax

组件的数据来源,通常是通过 Ajax 请求从服务器获取,可以使用 componentDidMount 方法设置 Ajax 请求,等到请求成功

,再用 this.setState 方法重新渲染 UI

jsx的优点
jsx执行更快(它在编译为javascript代码后进行了优化)、它的类型安全的,在编译过程中就能发现错误、使用jsx编写模板更加简单快速

可以在 JSX 中使用 JavaScript 表达式。表达式写在花括号 {} 中

JSX 中不能使用 if else 语句,单可以使用 conditional (三元运算) 表达式来替代。以下实例中如果变量 i 等于 1 浏览

器将输出 true, 如果修改 i 的值,则会输出 false

React 推荐使用内联样式。我们可以使用 camelCase 语法来设置内联样式. React 会在指定元素数字后自动添加 px

注释需要写在花括号中

数组

JSX 允许在模板中插入数组,数组会自动展开所有成员

React 可以渲染 HTML 标签 (strings) 或 React 组件 (classes)。

要渲染 HTML 标签,只需在 JSX 里使用小写字母的标签名。

var myDivElement = <div className="foo" />;
ReactDOM.render(myDivElement, document.getElementById('example'));

要渲染 React 组件,只需创建一个大写字母开头的本地变量。
var MyComponent = React.createClass({/*...*/});
var myElement = <MyComponent someProperty={true} />;
ReactDOM.render(myElement, document.getElementById('example'));

React 的 JSX 使用大、小写的约定来区分本地组件的类和 HTML 标签

复合组件

我们可以通过创建多个组件来合成一个组件,即把组件的不同功能点进行分离

react的新手基础知识笔记的更多相关文章

  1. React Native 入门基础知识总结

    中秋在家闲得无事,想着做点啥,后来想想,为啥不学学 react native.在学习 React Native 时, 需要对前端(HTML,CSS,JavaScript)知识有所了解.对于JS,可以看 ...

  2. JS基础知识笔记

    2020-04-15 JS基础知识笔记 // new Boolean()传入的值与if判断一样 var test=new Boolean(); console.log(test); // false ...

  3. Java多线程基础知识笔记(持续更新)

    多线程基础知识笔记 一.线程 1.基本概念 程序(program):是为完成特定任务.用某种语言编写的一组指令的集合.即指一段静态的代码,静态对象. 进程(process):是程序的一次执行过程,或是 ...

  4. javascript基础知识笔记-自用

    笔记内容根据个人基础知识不足不明白之处做的记录.主要看的:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript 1.变量,变量的名字又叫标识符 ...

  5. 【温故知新】—— React/Redux/React-router4基础知识&独立团Demo

    前言:React专注View层,一切皆组件:全部使用ES6语法,最新版本为React16. Redux是专注于状态管理的库,和react解耦:单一状态,单向数据流.[独立团github地址] 一.Re ...

  6. Mysql之基础知识笔记

    Mysql数据库基础知识个人笔记 连接本地数据库: mysql -h localhost -u root -p 回车输入数据库密码 数据库的基础操作: 查看当前所有的数据库:show database ...

  7. java基础知识-笔记整理

    1.查看已安装jdk文件路径 CMD输入java -verbose.   2.java学习提升路线 java学习视屏地址: http://www.icoolxue.com/album/show/38 ...

  8. JavaScript基础知识笔记

    做前端几年了,一直疏于整理归纳,所以这两天把基础看了一遍,加上使用经验,整理了基础知识中关键技术,旨在系统性的学习和备忘.如果发现错误,请留言提示,谢谢! 重要说明:本文只列举基础知识点,中级和高级内 ...

  9. Javascript 基础知识笔记

    标签(空格分隔): 廖老师学习笔记 javascript 基本入门 根据廖雪峰老师官网,自己看后的简单笔记 第一小节 基本知识 <script type="text/javascrip ...

随机推荐

  1. git 问题解决办法

    1.撤销 add 添加:git rm -r --cached . (参考:https://www.cnblogs.com/wuchanming/p/5428897.html) 2.撤销 commit ...

  2. js-ES6学习笔记-Symbol

    1.ES6引入了一种新的原始数据类型Symbol,表示独一无二的值.它是JavaScript语言的第七种数据类型,前六种是:Undefined.Null.布尔值(Boolean).字符串(String ...

  3. 【代码笔记】iOS-键盘自适应弹出

    一,效果图. 二,工程图. 三,代码. ViewController.h #import <UIKit/UIKit.h> @interface ViewController : UIVie ...

  4. 关于flex布局兼容

    (做个记录) 一.W3C各个版本的flex 2009 version 标志:display: box; or a property that is box-{*} (eg. box-pack) 201 ...

  5. Bootstrap(一)

    Bootstrap 是最受欢迎的 HTML.CSS 和 JS 框架,用于开发响应式布局.移动设备优先的 WEB 项目. 使用感觉简约大气便捷,扁平化设计.好多好多CSS.JS....总有你心仪的那一款 ...

  6. SSL certificate problem: unable to get local issuer certificate 的解决方法

    今天在进行微信开发获取微信Access_Token时,使用到了php的curl库, 在敲完代码后获取token失败,经过各种排查错误,到了下面这一步 SSL certificate problem: ...

  7. JAVA后端笔试试题(一)

    2017年6月7日,天气晴转阴.心情还不错. 上周六参加了自己的第一场笔试,感觉很糟糕,主要是对基础知识掌握不扎实,现在把笔试中的部分问题总结归纳如下,便于以后查看. 1.GC是什么?为什么要GC? ...

  8. Windows7系统如果安装&升级IE11浏览器

    作为一个前端工作人员,IE678简直就是噩梦,还好现在大多数网站已经开始放弃了对IE6/7/8的支持了. 由于Win7系统默认是安装的IE8,所以在打开部分网站时会提示:IE浏览器版本过低.解决方法如 ...

  9. onkeydown小练习

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. Python使用MySQLConnector/Python操作MySQL、MariaDB数据库

    使用MySQL Connector/Python操作MySQL.MariaDB数据库   by:授客 QQ:1033553122 因目前MySQLdb并不支持python3.x,而MySQL官方已经提 ...