React-虚拟DOM
先举个例子: import React from 'react' import ReactDOM from 'react-dom' let myRender = ( ) => { let el = ( < div > < h1 > 虚拟 DOM < / h1 > < p > { new Date ( ) . toLocaleString ( ) } < / p > < / div > ) ReactDOM . render ( el , document . getElementById ( 'root' ) ) } // 定时器每 1 秒执行一次 setInterval ( myRender , 1000 ) 打开浏览器控制台,在 Elements 中会发现,只有数据改变的部分 DOM 才会进行更新;是因为在 react 中,数据发生改变时是通过虚拟 DOM 更新的;当数据发生改变时,会用最新的数据去修改模板形成新的虚拟 DOM,新的虚拟 DOM 和旧的 虚拟DOM 通过 diff 算法进行比较找到需要更新的地方进行更新 Diff 算法 在 React 中有两种假设: 两个不同类型的元素会产生不同的树 开发者可以通过 key 属性指定不同树中没有发生改变的子元素 Diff 算法说明 如果两棵 DOM 树的根元素类型不同,React 会销毁旧树,创建新的 DOM 树。