1. 程式人生 > >react渲染機制

react渲染機制

span ldr render lin end js對象 get spl ring

react組件

class Form extends React.Compoent{

  constructor() {

    super()

  }

  render(){

    return(

    <from><input type="text"/></from>

  )

  }

}

ReactDOM.render((<div><Form/></div>)).document.getElementById(‘app‘)

ReactDOM.render把組件進行開始渲染

React.createEelement()把組件生成一個對象,這個對象把代表一個真是的dom,這個對象就是我們說的虛擬dom,(虛擬dom就是用js對象結構模擬html的dom結構,增刪改查先直接操作js對象,最後更新到真正的dom樹上)

虛擬出來的dom如下:

{
  type: ‘div‘,
  props: {
    className: ‘test‘,
    children: []
  }
}

虛擬dom 對象還包括react自身需要的屬性,比如ref,key

有了虛擬dom,接下來的工作就是把虛擬dom樹渲染成真正的dom樹

1:react的做法就是根據不同的type構造出相應的渲染對象

2:然後渲染對象使用mountcomponent方法(負責把虛擬dom生成真實的dom)

3:然後循環叠代整個虛擬dom樹,生成最終的真實的dom樹,最終插入容器節點

// vdom 是第3步生成出來的虛擬 dom 對象 var renderedComponent = instantiateReactComponent( vdom ); // dom node
var markup = renderedComponent.mountComponent(); // 把生成的 dom node 插入到容器 node 裏面,真正在頁面上顯示出來 // 下面是偽代碼,React 的 dom 操作封裝在 DOMLazyTree 裏面 containerNode.appendChild( markup );

react渲染機制