美文网首页
virtual dom

virtual dom

作者: 木中木 | 来源:发表于2019-11-09 20:05 被阅读0次

首先,我们要知道react里面 virtual dom结构:

    const dom = {
        tagName: 'div',
        properties: {
            style: [],
            ...
        },
        key:'',
        children: [],
    }

上述结构非常清晰明了,virtual dom中的节点称为reactNode,reactNode分为 reactElement,reactText, ReactFragment, 其中reactElement又分为reactComponentElement和reactDomElement。 null、undefined、boolean都是reactEmpty元素。

  • 创建react元素,可以通过JSX创建或者React.createELement,其实JSx本质就是createElement的语法糖。初始化组件会对入参节点进行判断,如果node为空,则通过ReactEmptyComponent.create;如果是对象,element为字符串,通过ReactNativeComponent创建。否则通过ReactCompositeComponentWrapper创建;如果是字符串或者数字,则通过ReactNativeComponent.createInstanceForText创建

  • reactDomComponent更新属性
    先删除属性

    1. 如果删除属性存在事件代理,则用deleteListener取消事件代理,然后删除属性

    然后添加属性

    1. 如果存在事件,则通过enqueuePutListener添加事件代理
    2. 如果存在样式,先对样式就行合并,然后创建样式
    3. 创建属性
    4. 创建属性的唯一标识 this._domID
  • reactDomComponent更新子节点

    1. 先删除不需要的子节点和内容,删除子节点执行方法this.upateChilren(null,transaction,context),删除节点内容执行方法this.updateTextContent(‘’).
    2. 更新子节点和内容this.upateChilren(nextChildren,transaction,context)和this.updateTextContent(‘’+nextContent).
  • 组件卸载时,reactDOmComponent,做了以下几个事情

  1. 清空子节点
  2. 注销事件代理
  3. 销毁rootNodeID
  4. 销毁domId

相关文章

  • virtual DOM 实现原理

    virtual DOM 实现: virtual-dom Snabbdom 对比 数据结构virtual Node ...

  • 实现简单render函数

    什么是Virtual Dom React和Vue2都使用了Virtual Dom技术,Virtual Dom并不是...

  • Day7:virtual dom & MVVM

    virtual dom 什么是virtual dom 虚拟dom 用JS模拟DOM结构 DOM变化的对比,放在JS...

  • Virtual DOM

    什么是 Virtual DOM Virtual DOM(虚拟 DOM),是由普通的 JS 对象来描述 DOM 对象...

  • Javascript 简要,你一定要看看

    1.Virtual DOM Vue 和 React 都使用了 Virtual DOM,那么什么是 Virtual ...

  • 虚拟DOM

    虚拟DOM 基础概念: virtual DOM是对真实DOM的描述和映射 当Virtual DOM改变后,我们得到...

  • 虚拟DOM

    Virtual DOM Virtual DOM,是由普通的JS对象来描述DOM对象,因为不是真实的DOM对象,所以...

  • 初探Virtual dom & diff算法

    问:Virtual dom 是什么?为何会存在Virtual dom?答:用JS模拟DOM结构。原因:1.DOM操...

  • iview表格render

    关于 RenderReact 和 Vue 2 都使用了 Virtual Dom 技术,Virtual Dom 并不...

  • JavaScript虚拟DOM

    什么是Virtual DOM Virtual DOM是对DOM的抽象,本质上是JavaScript对象,这个对象就...

网友评论

      本文标题:virtual dom

      本文链接:https://www.haomeiwen.com/subject/cabnbctx.html