react学习总结

577 阅读2分钟

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方法更新数据。