虚拟 DOM 的原理是什么?
<div id="x"> <span class="red">hi</span> </div>{ tag: 'div', props: { id: 'x' }, children: [ { tag: 'span', props: { className: 'red' }, children: [ 'hi' ] } ] }React.createElement("div", { id: "x"}, React.createElement("span", { class: "red" }, "hi") )function render(vdom) { // 如果是字符串或者数字,创建一个文本节点 if (typeof vdom === 'string' || typeof vdom === 'number') { return document.createTextNode(vdom) } const { tag, props, children } = vdom // 创建真实DOM const element = document.createElement(tag) // 设置属性 setProps(element, props) // 遍历子节点,并获取创建真实DOM,插入到当前节点 children .map(render) .forEach(element.appendChild.bind(element)) // 虚拟 DOM 中缓存真实 DOM 节点 vdom.dom = element // 返回 DOM 节点 return element } function setProps // 略 function setProp // 略 // 作者:Shenfq // 链接:https://juejin.cn/post/6844903870229905422
Last updated