1.react中的JSX语法跟Javascript不兼容,凡是使用JSX的地方,都要加上type="text/babel"。
<script type="text/babel"></script>
2.ReactDOM.render用于将模板转为HTML语言,并插入指定的DOM节点。例如:
ReactDOM.render(
<h1>Hello, world!</h1>,
document.getElementById('example')
)
指的是将h1标题,插入example节点。
3.JSX语法
var names = ['Alice', 'Emily', 'Kate'];
ReactDOM.render(
<div>
{
nemes.map(function(name) {
return <div>Hello, {name}!</div>
})
}
</div>,
document.getElementById('example')
)
体现了JSX的基本语法准则:遇到HTML标签(以<开头),就用HTML解析,遇到代码块(以{开头),就用JavaScript解析。
4.component组件
模板插入组件时,会自动生成组件的一个实例。所有组件都必须有自己的render方法,用以输出组件。
组件类额第一个字母必须大写,否则会报错。组件类只能包含一个顶层标签,否则会报错。比方说,包含一个h1和p标签,就会报错,可以用div包起来。
5.获取真实的dom组件
组件并不是真是的DOM节点,而是存在于内存中的一种数据结构,叫做虚拟DOM。只有当它插入文档后,才会变成真是的DOM。根据react的设计,所有的DOM变动,都会先在虚拟DOM上发生,然后再将实际发生变动的部分,反映在真是DOM上,这种算法叫做DOM diff,可以极大提高网页的性能表现。
6.组件的生命周期分为三种状态:
Mounting:已插入真实DOM
Updating:正在被重新渲染
Unmounting:已移出真实DOM
react为每种状态提供了2种处理函数,will函数在进入状态前调用,did函数在进入状态之后调用,三种状态共五种处理函数。
- componentWillMount()
- componentDidMount()
- componentWillUpdate(object, nextProps, object nextState)
- componentDidUpdate(object, prevProps, object prevState)
- componentWillUnmount()
7.虚拟DOM
virtual dom,是react抽象出的一个对象,描述dom应该是什么样子,如何呈现。通过这个virtual dom去更新真实的dom,由这个virtual DOM管理真实DOM的更新。
diff算法,更新virtual dom并不保证马上影响真实的DOM,react会等事件循环结束,然后利用diff算法,通过当前新的dom表述与之前的作比较,计算出最小的步骤更新真实的DOM。
8.state和render
state属性包含定义组件所需的一些数据,当数据发生变化时,将会调用render重现渲染,只能通过setState方法更新数据。