为了账号安全,请及时绑定邮箱和手机立即绑定

react虚拟dom中旧js对象是如何跟新js对象进行对比(代码层面)如何实现

react虚拟dom中旧js对象是如何跟新js对象进行对比(代码层面)如何实现

繁花不似锦 2019-02-19 16:25:43
我听说是同级对比但是通过代码如何实现比如旧js对象{'div','class=a',{children}}新js对象{'div','class=b',{children}}js对象与js对象对比1.我想知道底层是通过什么方法(代码)对比是遍历吗?2.找到了不同处后面的子节点都不再对比了吗?直接删除后面重新生成?
查看完整描述

2 回答

?
慕虎7371278

TA贡献1802条经验 获得超4个赞

class VNode {  constructor (tagName, props, children) {    this.tagName = tagName    this.props = props    this.children = children
  } 

  render () {    const { props, children } = this,
      dom = document.createElement(this.tagName)    Object.entries(props).map(([key, value]) => dom.setAttribute(key, value))
    children.map(o => dom.appendChild(o instanceof VNode ? o.render() : document.createTextNode(o)))    return dom
  }
}const h = (tagName, props, children) => new VNode(tagName, props, children)

react的createClass 了解一下


查看完整回答
反对 回复 2019-02-19
  • 2 回答
  • 0 关注
  • 683 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信