美文网首页工作生活
react学习笔记-类型检查、虚拟DOM(2)

react学习笔记-类型检查、虚拟DOM(2)

作者: wayne1125 | 来源:发表于2019-07-02 21:33 被阅读0次

4-1、开发者工具安装

chrome扩展程序中下载React Developer Tools工具,调试工具,处于开发环境时右上角是红色的说明安装成功,显示蓝色是线上环境,如知乎https://www.zhihu.com/signup?next=%2F

4-2、PropTypes类型检查与DefaultProps默认值

// 限制父子组件传值类型,类型校验等
TodoItem.propTypes = {
  test: PropTypes.string.isRequired, //要求必须传
  content: PropTypes. oneOfType(PropTypes.number,PropTypes.string), // 既 
 可以是number又可以是string类型
 // 可以指定一个数组由某一类型的元素组成
 optionalArrayOf: PropTypes.arrayOf(PropTypes.number),
 // 可以指定一个对象由某一类型的值组成
  optionalObjectOf: PropTypes.objectOf(PropTypes.number),
  itemDelete: PropTypes.func, // 函数类型
  itemDelete: PropTypes.array, // 数组类型
itemDelete: PropTypes.object, // 对象类型
  index: PropTypes.number, // 数字类型
  index: PropTypes.bool // 布尔类型
}
// 设置默认值
TodoItem.defaultProps = {
  test: 'hello world', //默认值
}

4-3、Props,state与render函数的关系

  • 当组件的state或则props发生改变时,render函数就会重新执行
  • 当父组件的render函数被运行时,它的子组件的render都将被重新运行一次

4-4、React中的虚拟DOM

第1中方案:

  1. state数据
  2. JSX模版
  3. 数据 + 模版结合,生成真实的DOM来显示
    . state发生改变
  4. 数据 + 模版结合,生成真实的DOM,替换原始的DOM

缺陷:

  • 第一次生成一个完整的DOM片段
  • 第二次生成一个完整的DOM
  • 第二次的DOM替换第一次的DOM,非常消耗性能

第2中方案:

  1. state数据
  2. JSX模版
  3. 数据 + 模版结合,生成真实的DOM来显示
  4. state发生改变
  5. 数据 + 模版结合,生成真实的DOM,并不直接替换原始的DOM
  6. 新的DOM(DocumentFragment)和原始的DOM做对比,找差异
  7. 找出input狂发生了变化
  8. 只用新的DOM中的input元素,替换调老的DOM中的input元素

缺陷:

  • 性能的提升并不明显(第6步会消耗一部分性能)

第3中方案:虚拟DOM

  1. state数据
  2. JSX模版
  3. 数据 + 模版结合,生成真实的DOM来显示
    <div id='abc'><span>Hello World</span></div>
  4. 生成虚拟DOM(虚拟DOM就是一个JS对象,用它来描述真DOM)(损耗了性能很低,js操作js比DOM操作消耗很低)
    ['div',{id:'abc'},['span',{},'Hello World']]
  5. state发生变化
  6. 数据 + 模版生成新的虚拟DOM(极大的提升了性能)
    ['div',{id:'abc'},['span',{},'bye bye']]
  7. 比较原始虚拟DOM和新的虚拟DOM的区别,找到区别是span中内容(极大的提升了性能)
  8. 直接操作DOM,改变span中的内容

相关文章

  • react学习笔记-类型检查、虚拟DOM(2)

    4-1、开发者工具安装 chrome扩展程序中下载React Developer Tools工具,调试工具,处于开...

  • React虚拟DOM浅析

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

  • React之JSX

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

  • React基础篇之虚拟DOM

    Hello World JS创建虚拟DOM JSX创建虚拟DOM 虚拟DOM与真实DOM 下一篇:React基础篇...

  • React 更新机制

    React 的更新流程 React 的渲染流程是: JSX → 虚拟 DOM → 真实 DOM React 的更新...

  • React element tree 是什么?和 Virtual

    React 术语,React element tree 是什么?和 Virtual DOM(VDOM、虚拟 DOM...

  • react学习笔记

    React笔记 创建项目 入口文件 组件构成 子组件对父组件的校验等 React的虚拟Dom实现原理 state数...

  • 几种前端框架的选择对比

    react:速度快,虚拟DOM,setState的时候虚拟dom会与实际dom进行比较,有变化再去更新实际dom,...

  • react之虚拟dom和diff算法

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

  • React 基础学习总结

    React 基础学习总结 1、创建虚拟DOM对象的两种方式 React.createElement(type, p...

网友评论

    本文标题:react学习笔记-类型检查、虚拟DOM(2)

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