react渲染機制
阿新 • • 發佈:2018-05-09
span ldr render lin end js對象 get spl ring
var markup = renderedComponent.mountComponent();
// 把生成的 dom node 插入到容器 node 裏面,真正在頁面上顯示出來
// 下面是偽代碼,React 的 dom 操作封裝在 DOMLazyTree 裏面
containerNode.appendChild( markup );
。
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。
react渲染機制