咱们在进行dom操作的时候可能会呈现须要更新某一个dom元素,但如果不更新整个组件就无奈失效,其实咱们应用diff算法配合虚构dom即可实现。

  虚构DOM  实质上就是一个JS对象,用来形容你心愿在屏幕上看到的内容

虚构dom

  Diff算法  执行过程  首次渲染时,React会依据初始化的state(model),创立一个虚构DOM对象(树)  依据虚构DOM生成真正的DOM,渲染到页面  当数据变动后(setState()),会从新依据新的数据,创立新的虚构DOM对象(树)  与上一次失去的虚构DOM对象,应用Diff算法比对(找不同),失去须要更新的内容  最终,React只将变动的页游内容更新(patch)到DOM中,从新渲染到页面

diff算法

  代码演示  组件render()调用后,依据状态和JSX构造生成虚构DOM对象(renderwww.sangpi.com()办法的调用并不意味着浏览器进行渲染,render办法调用时意味着Diff算法开始比对了)  示例中,只更新p元素的文本节点内容  首次渲染的DOM对象

代码演示

  数据更新之后的虚构DOM对象

页游代码演示2

  小结  工作角度:利用第一,原理第二  原理有助于更好的了解React的本身运行机制  setState() 异步更新数据  父组件更新导致子组件更新,纯组件晋升性能  思路清晰简略为前提,虚构DOM和Diff保效率(渲染变动的组件)  虚构DOM -> state + JSX  虚构DOM最大的特点是 脱离了浏览器的解放,也就是意味着只有是能反对js的中央都能够用到react,所以为什么说react是能够进行跨平台的开发  以上就是对于dom和diff算法的介绍了,心愿能帮到大家。