<!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. .4-浅析express源码之applicaiton模块(3)-compile函数

    基本上application模块的api都看的差不多了,但是在app.set中还有一个遗漏点,如下: app.set = function set(setting, val) { // ...设值 / ...

  2. AngularJS学习笔记(一)走近AngularJS

    什么是AngularJS AngularJS是一款优秀的前端JS框架,是Google多款产品之一,简称ng. ng有着诸多特性,最为核心的是:MVVM.模块化.自动化双向数据绑定.语义化标签.依赖注入 ...

  3. Webscoket

    websocket: http://blog.csdn.net/xiaoping0915/article/details/78754482    很好的讲解了websocket ,还有一个小例子 ht ...

  4. 怎么在XY图表中添加注解(LightningChart控件为例)?

    场景: 折线图上有多个信号,每个信号都需要显示在自己的Y轴上.如何在屏幕的右侧显示每个信号的基本统计值?这里有为每个信号计算基本数据: 最小值,最大值,平均值. | |Signal 3........ ...

  5. Oracle- 复杂查询及总结

    一.复杂查询 1. 列出至少有一个员工的所有部门编号.名称,并统计出这些部门的平均工资.最低工资.最高工资. 1.确定所需要的数据表: emp表:可以查询出员工的数量: dept表:部门名称: emp ...

  6. Weex 实现文件的下载

    需求:在使用weex框架时,我们使用vue文件写页面,在native端加载服务器端的js页面时由于网络状态的不确定性,我们需要在第一次加载的时候对js页面进行本地存储.也就是说我们需要把js文件下载到 ...

  7. Android - View的绘制你知道多少?

    https://github.com/android-cn/android-open-project-analysis/tree/master/tech/viewdrawflow Android-La ...

  8. [HNOI2011]括号修复

    设\(nd[4]\) 0--多出来的右括号 1--多出来的左括号 2--取反后多出来的右括号 3--取反后多出来的左括号 这样一来 Swap: swap(0,3),swap(1,2),swap(sn[ ...

  9. jquery判断浏览器的内核

    <script type='text/javascript'> $(function(){ if($.browser.msie) { alert("IE浏览器"); } ...

  10. Dynamics 365Online 使用adal.js注册和配置SimpleSPA应用程序

    本篇是基于dynamics 365online撰写,本文中使用的365online及azure均为试用版,因为online在国内还没落地,所以我申请的是新加坡版,online的申请方式可见我之前的博文 ...