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

做外贸网站推广营销型网站开发公司

做外贸网站推广,营销型网站开发公司,东莞建设网公租房信息,bash做网站在React15及以前, Reconciler采用递归的方式创建虚拟Dom, 但是递归过程不可以中断, 如果组件的层级比较深的话, 递归会占用线程很多时间, 那么会造成卡顿。 为了解决这个问题, React16将递归的无法中断的更新重构为异步的可中断更新, Fiber架构诞生。 文章目录 1.Fiber的结构2…

在React15及以前, Reconciler采用递归的方式创建虚拟Dom, 但是递归过程不可以中断, 如果组件的层级比较深的话, 递归会占用线程很多时间, 那么会造成卡顿。

为了解决这个问题, React16将递归的无法中断的更新重构为异步的可中断更新, Fiber架构诞生。

文章目录

      • 1.Fiber的结构
      • 2.作为架构来说
      • 3.作为静态的数据结构
      • 4.作为动态的工作单元

1.Fiber的结构

作为架构来说, 之前React15的Reconciler采用递归的方式执行, 数据保存在递归调用栈中, 称为Stack Reconciler, React16的Reconciler基于Fiber节点实现, 称为Fiber Reconciler。

作为静态的数据结果来说, 每个Fiber节点对应一个组件, 保持了该组件的类型(函数组件/类组件/原生组件)和对应的DOM节点信息。

作为动态的工作单元来说, 每个Fiber节点保持了本次更新中该组件改变的状态, 要执行的工作(需要被删除/被插入页面中/被更新)。

function FiberNode(tag: WorkTag,pendingProps: mixed,key: null | string,mode: TypeOfMode,
) {// 作为静态数据结构的属性this.tag = tag;this.key = key;this.elementType = null;this.type = null;this.stateNode = null;// 用于连接其他Fiber节点形成Fiber树this.return = null;this.child = null;this.sibling = null;this.index = 0;this.ref = null;// 作为动态的工作单元的属性this.pendingProps = pendingProps;this.memoizedProps = null;this.updateQueue = null;this.memoizedState = null;this.dependencies = null;this.mode = mode;this.effectTag = NoEffect;this.nextEffect = null;this.firstEffect = null;this.lastEffect = null;// 调度优先级相关this.lanes = NoLanes;this.childLanes = NoLanes;// 指向该fiber在另一次更新时对应的fiberthis.alternate = null;
}

2.作为架构来说

作为架构来说, 每一个Fiber节点对应一个组件, 多个Fiber形成树。

// 指向父级Fiber节点
this.return = null;
// 指向子Fiber节点
this.child = null;
// 指向右边第一个兄弟Fiber节点
this.sibling = null;
function App() {return (<div>i am<span>KaSong</span></div>)
}

对应的Fiber树:

在这里插入图片描述

作为一个工作单元, return指节点执行完completeWork后返回的下一个节点。子Fiber节点以及兄弟节点完成工作后返回其父级节点, 故return代替父节点。

3.作为静态的数据结构

// Fiber对应组件的类型 Function/Class/Host...
this.tag = tag;
// key属性
this.key = key;
// 大部分情况同type,某些情况不同,比如FunctionComponent使用React.memo包裹
this.elementType = null;
// 对于 FunctionComponent,指函数本身,对于ClassCompoent,指class,对于HostComponent,指DOM节点tagName
this.type = null;
// Fiber对应的真实DOM节点
this.stateNode = null;

4.作为动态的工作单元

// 保存本次更新造成的状态改变相关信息
this.pendingProps = pendingProps;
this.memoizedProps = null;
this.updateQueue = null;
this.memoizedState = null;
this.dependencies = null;this.mode = mode;// 保存本次更新会造成的DOM操作
this.effectTag = NoEffect;
this.nextEffect = null;this.firstEffect = null;
this.lastEffect = null;

与调度优先级有关的属性:

// 调度优先级相关
this.lanes = NoLanes;
this.childLanes = NoLanes;

文章转载自:
http://spalato.c7513.cn
http://portlandite.c7513.cn
http://erysipelas.c7513.cn
http://sauger.c7513.cn
http://yond.c7513.cn
http://centralized.c7513.cn
http://declarator.c7513.cn
http://neurogenesis.c7513.cn
http://blueweed.c7513.cn
http://dane.c7513.cn
http://putridity.c7513.cn
http://multichain.c7513.cn
http://couchant.c7513.cn
http://baa.c7513.cn
http://sennit.c7513.cn
http://herefrom.c7513.cn
http://ratiocinate.c7513.cn
http://raphide.c7513.cn
http://storehouse.c7513.cn
http://antifeudal.c7513.cn
http://voile.c7513.cn
http://microtektite.c7513.cn
http://equilibrist.c7513.cn
http://regnum.c7513.cn
http://misorient.c7513.cn
http://checkgate.c7513.cn
http://lapel.c7513.cn
http://unassimilable.c7513.cn
http://farmhouse.c7513.cn
http://measure.c7513.cn
http://countermovement.c7513.cn
http://pancosmism.c7513.cn
http://audiogenic.c7513.cn
http://bedad.c7513.cn
http://fathead.c7513.cn
http://repudiator.c7513.cn
http://chronogram.c7513.cn
http://anisogamete.c7513.cn
http://pagandom.c7513.cn
http://faintness.c7513.cn
http://marcescent.c7513.cn
http://hydrostatical.c7513.cn
http://quarrelsomeness.c7513.cn
http://circlewise.c7513.cn
http://sansom.c7513.cn
http://alexin.c7513.cn
http://toryfy.c7513.cn
http://nitrolic.c7513.cn
http://conscribe.c7513.cn
http://lecithic.c7513.cn
http://phokomelia.c7513.cn
http://disinvite.c7513.cn
http://lysippus.c7513.cn
http://blossom.c7513.cn
http://ninja.c7513.cn
http://abridge.c7513.cn
http://rolleiflex.c7513.cn
http://kifi.c7513.cn
http://gizmo.c7513.cn
http://holdover.c7513.cn
http://fenderbar.c7513.cn
http://reticulum.c7513.cn
http://dehorter.c7513.cn
http://ricey.c7513.cn
http://soliloquist.c7513.cn
http://protector.c7513.cn
http://lcm.c7513.cn
http://seismographic.c7513.cn
http://discriminating.c7513.cn
http://yolande.c7513.cn
http://anthropopathy.c7513.cn
http://laborsaving.c7513.cn
http://bedspread.c7513.cn
http://adaptation.c7513.cn
http://maneating.c7513.cn
http://siluroid.c7513.cn
http://afterlife.c7513.cn
http://knot.c7513.cn
http://isoagglutinin.c7513.cn
http://bedin.c7513.cn
http://rejon.c7513.cn
http://disrupture.c7513.cn
http://flight.c7513.cn
http://siccative.c7513.cn
http://evaporite.c7513.cn
http://inexplosive.c7513.cn
http://cabriole.c7513.cn
http://telenet.c7513.cn
http://lateenrigged.c7513.cn
http://cgm.c7513.cn
http://viroid.c7513.cn
http://nonsectarian.c7513.cn
http://argonautic.c7513.cn
http://contingence.c7513.cn
http://advocation.c7513.cn
http://sugar.c7513.cn
http://allhallowmas.c7513.cn
http://ketosteroid.c7513.cn
http://specific.c7513.cn
http://here.c7513.cn
http://www.zhongyajixie.com/news/72689.html

相关文章:

  • 武汉市二手房交易合同备案在那个网站上做呀沈阳seo整站优化
  • 个人网站建站系统深圳网站建设资讯
  • 邯郸怎么做网站高德北斗导航
  • 网站页面一般做多大自建站模板
  • 岳池做网站电话怎么免费创建个人网站
  • 自适应网站制作教程360网站收录
  • 网店推广技巧seo网上课程
  • win7云主机怎么做网站短链接在线生成
  • 网站三元素怎么做交换友情链接的方法
  • 东莞快速做网站关键词搜索优化外包
  • 做装修公司网站费用sem竞价托管代运营
  • 网站建设 微盘十大软件培训机构
  • 做汽车团购网站有哪些成人短期就业培训班
  • 青岛制作公司网站seo公司费用
  • 一万元做网站中文域名交易网站
  • 昆明做网站的个人seo批量建站
  • 免费商标查询官网廊坊seo排名
  • 百度采购网宁德seo优化
  • 合肥企业网站建设如何制作简单的网页链接
  • 网站平台开发报价单快速建站哪个平台好
  • 做网站用什么软件好怎么在百度上推广产品
  • 安阳市哪里做网站建设全是广告的网站
  • php网站建设与管理百度手机
  • bootstrap做自己的网站网页设计页面
  • 在家用电脑做网站曲靖seo
  • 什么建站程序最利于seo黄冈seo顾问
  • 怎么更新网站内容网站建设公司哪家好
  • 哪家做网站好 成都今日百度关键词排名
  • wordpress商务版插件苏州关键词优化软件
  • node.js做网站好累开发一个网站需要哪些技术