题解 | #虚拟DOM#
const _createElm = vnode => {
// 1.对于一个对象,如果tag属性不为undefined,则创建标签元素
// 2.如果children属性不为空数组,则递归调用_createElm函数创建元素
// 3.返回元素对象
// 4.如果tag属性为undefined,则创建文本节点并返回
let { tag, props, children, text } = vnode
if (!tag) {
// 1.返回文本节点
return document.createTextNode(text)
}
// 2.返回元素节点
let element = document.createElement(tag)
Object.keys(props).forEach(prop => {
// element.className = props[prop]
element.setAttribute(prop, props[prop])
})
element.innerHTML = text
if (vnode.children.length) {
children.forEach(node => element.append(_createElm(node)))
}
return element
}
查看1道真题和解析
老板电器公司氛围 197人发布