美文网首页工作生活
react学习笔记-深入理解虚拟DOM(3)

react学习笔记-深入理解虚拟DOM(3)

作者: wayne1125 | 来源:发表于2019-07-03 10:30 被阅读0次

4-5、深入了解虚拟DOM

1)react实际实现底层原理(4-4中所讲为了更好的理解虚拟DOM)
  1. state数据
  2. JSX模版
  3. 数据 + 模版生成虚拟DOM(虚拟DOM就是一个JS对象,用它来描述真DOM)(损耗了性能很低,js操作js比DOM操作消耗很低)
  4. 用虚拟DOM的结构生成真实的DOM来显示
    <div id='abc'><span>Hello World</span></div>
    ['div',{id:'abc'},['span',{},'Hello World']]
  5. state发生变化
  6. 数据 + 模版生成新的虚拟DOM(极大的提升了性能)
    ['div',{id:'abc'},['span',{},'bye bye']]
  7. 比较原始虚拟DOM和新的虚拟DOM的区别,找到区别是span中内容(极大的提升了性能)
  8. 直接操作DOM,改变span中的内容
优点:
  • 性能提升了
  • 它使得跨端应用得以实现,React Native
2)虚拟DOM实现过程

// JSX -> createElement -> 虚拟DOM(JS对象) -> 真实的DOM
render () {
return (<div>item</div>)
}
相当于
return React.createElement('div',{},'item')

4-6、虚拟DOM中的Diff算法

比较原始虚拟DOM和新的虚拟DOM的区别,找到区别是span中内容(极大的提升了性能)
Diff(diffrence)算法

图1
  • 把多次setState结合成一次setState进行,减少虚拟DOM比对次数
图2
  • 同层比对,如果某一层不满足,则该层下方都不会重新比对,直接废弃掉,用新的DOM替换旧的DOM


    图3
  • 确保key值的唯一性,使用索引在修改过数据后可能存在对应不上的情况,应使用item或唯一标示id等作为key值

4-7、React中ref的使用

<input
onChange={(e)=>this.handleInputChange('inputValue',e)}
ref={(input) => {this.input = input}}
/>

handleInputChange (key,e) {
console.log(e.target,key,this.input)
const value = e.target.value
// const value = this.input.value
// setState是异步执行函数
this.setState(()=>({
[key]: value
}), () => {
console.log(this.ul.querySelectorAll('div').length,this.state.inputValue)
})
}

  • handleInputChange函数中的e.target等价于ref定义的this.input

相关文章

  • react学习笔记-深入理解虚拟DOM(3)

    4-5、深入了解虚拟DOM 1)react实际实现底层原理(4-4中所讲为了更好的理解虚拟DOM) state数据...

  • react之虚拟dom和diff算法

    React 虚拟DOM的理解 React框架现在用的人非常多,React为何如此受欢迎?我想原因是引入了虚拟DOM...

  • Virtual DOM

    对 virtual DOM 的理解 React.createElement 函数所返回的就是一个虚拟 DOM 虚拟...

  • render

    react中有一个名词叫做虚拟DOM(virtual DOM),实质上就是对象。我对此的理解就是,先使用虚拟DOM...

  • 深入理解JAVA虚拟机 (一)

    深入理解JAVA虚拟机 (一) 本文是学习《深入理解Java虚拟机》周志明著 所整理的学习笔记,如有错误请斧正转载...

  • 深入理解React中的虚拟dom

    react是数据驱动渲染的,虚拟dom相对于传统的dom操作,性能的提升上很明显,过程大致如下:1.state数据...

  • 深入浅出理解react虚拟DOM

    说实话React源码真的很难读,很枯燥。React虚拟DOM的特性很多人都知道,但相信很多人并没那么清楚它究竟是什...

  • 理解React

    React v16.4.0 一、理解优点 1、虚拟DOM2、合成事件(SyntheticEvent) 1、虚拟DO...

  • React虚拟DOM浅析

    如果您正在使用React或学习React,那么您一定听说过“虚拟DOM”一词。现在什么是虚拟DOM?为什么Reac...

  • React之JSX

    什么是JSX React的核心机制之一就是虚拟DOM:可以在内存中创建虚拟的DOM元素。React利用虚拟DOM来...

网友评论

    本文标题:react学习笔记-深入理解虚拟DOM(3)

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