当前位置: 首页 > news >正文

电子商务网站规划与建设步骤武夷山网站建设wzjseo

电子商务网站规划与建设步骤,武夷山网站建设wzjseo,中国建筑网官网平台,网站单页模板制作软件react 的 diff 算法 为什么会用到 diff 算法? react在编译时将 jsx 解析为虚拟 dom 树,使用对象表示。在数据变动后会生成新的虚拟 dom 树对象,之后对比找出新旧虚拟 dom 树的差异,并将变动更新到浏览器页面上。 diff 算法的时间…

react 的 diff 算法

  • 为什么会用到 diff 算法?

    react在编译时将 jsx 解析为虚拟 dom 树,使用对象表示。在数据变动后会生成新的虚拟 dom 树对象,之后对比找出新旧虚拟 dom 树的差异,并将变动更新到浏览器页面上。

  • diff 算法的时间复杂度

    即使使用最前沿的算法,若要完整的对比两棵树,算法时间复杂度至少会达到O(n^3),在 react 的 diff 实践中,做了一些限制将 diff 算法的时间复杂度降低为O(n)

  • react 中 diff 算法如何实现的?
    • 为了降低算法的复杂度,React 为 diff 算法设置了 3 个限制:

      1. 只对同级别元素进行 diff,如果一个 DOM 元素在前后两次更新中跨越了层级,那么 React 不会尝试复用它
      2. 两个不同类型的元素会产生不同的树。比如元素从 div 变成了 p,那么 React 会直接销毁 div 以及子孙元素,新建 p 以及 p 对应的子孙元素
      3. 开发者可以通过 key 来暗示哪些子元素能够保持稳定
    • 单节点 diff

      单节点是指新节点为单一节点,但是旧节点数量不限制

      单节点 diff 步骤:

      1. 判断 key 是否相同,若不同,结果直接为不能复用,若相同直接下一步
      2. 若key相同,在判断type是否相同,若type相同就复用,若不同标记为删除
    • 多节点 diff

      多节点指的是新节点有多个,旧节点个数不限制

      多节点 diff 步骤:
      多节点情况下,可能需要 【新增,删除,移动】节点,需要两轮遍历

      • 第一轮遍历:尝试逐个的复用节点
      1. 若新旧节点的key和type都相同,则复用
      2. 若新旧节点的key相同,但type不同,生成新的节点,旧节点增加删除标记(但不结束遍历)
      3. 若新旧节点的key不同,不可复用,结束遍历
      • 第二轮遍历:处理上一轮遍历中没有处理完的节点
        若第一轮遍历被提前终止了,意味着有新的react元素或旧的fiberNode没有遍历完,此时需要第二轮遍历,包括以下三种情况:
      1. 只剩下旧子节点:将旧的子节点标记删除统一删掉
      2. 只剩下新子节点:新的子节点直接创建fiberNode节点
      3. 新就节点都有剩余:会将剩余旧的子节点放入一个map里,遍历新的子节点,若找到能复用的直接拿来复用,若找不到新节点直接新增,旧节点标记删除
http://www.dtcms.com/a/407928.html

相关文章:

  • 学校网站开发免费行情软件app网站大全下载免费入口
  • 北京网站建设排行榜10条重大新闻事件
  • 阅读网站建设重庆网站关键字优化
  • C++基础(21)——内存管理
  • 企业网站建设的目的网页 网站 站点的区别
  • 图像分类项目
  • wordpress 英语太原seo优化公司
  • 专门做壁纸的网站传奇页游
  • ubuntu18.04 vsomeip的编译及使用
  • 自适应网站价格成都it公司排名
  • 长沙seo网站排名厦门同安网站建设
  • 企业购网站建设小说分销平台
  • langchain概述
  • C++笔记(基础)基于范围的for循环 nullptr,using关键字
  • cpanel 子网站做旅游网站犯法吗
  • 浙江华企做的网站效果如何wordpress弹窗
  • 学做效果图的网站有哪些四川平昌县建设局网站
  • 在国外做黄皮网站违法么软盟软件 app开发公司
  • 建水网站建设网站常用的蓝色
  • 怎么查看网站有没有做301深广纵横设计公司官网
  • 做网站要不要35类商标网龙网络公司招聘
  • 【鸿蒙开源技术共建】用@luvi/lv-markdown-in在HarmonyOS上打造高性能Markdown编辑体验
  • 两学一做网站专栏怎么设置网站建设中期怎么入账
  • Java 中 NIO与传统IO的关系 (附Java IO 流核心类对比表)
  • 阿里巴巴怎么做企业网站南京江北新区楼盘
  • I/O 多路转接之 epoll:高并发服务器的性能利器
  • 呼叫行业群呼模式转手拨模式转型代价分析
  • 手机网站建站价格淘宝网站推广策划方案
  • linux 安装和使用CommonAPI
  • Linux指令和Windows的有啥不一样?咋用的?