题解 | #虚拟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
}


全部评论

相关推荐

qq乃乃好喝到咩噗茶:院校后面加上211标签,放大加粗,招呼语也写上211
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务