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

网站对接微信接口贵阳网站建设建站系统

网站对接微信接口,贵阳网站建设建站系统,网店推广软文范例,医疗网站建设网站整个React工作流程可以分为两大阶段#xff1a; Render阶段 Schecule Reconcile Commit阶段 注意#xff0c;Render阶段是在内存中运行的#xff0c;这意味者可以被打断#xff0c;而commit阶段一旦开始同步执行直到完成。 Renderer工作的阶段被称为commit阶段。commit阶…整个React工作流程可以分为两大阶段 Render阶段 Schecule Reconcile Commit阶段 注意Render阶段是在内存中运行的这意味者可以被打断而commit阶段一旦开始同步执行直到完成。 Renderer工作的阶段被称为commit阶段。commit阶段可以分为三个子阶段 before mutation阶段执行DOM操作前 mutation阶段执行DOM操作 layout阶段执行DOM操作后 其中上面的每个阶段又分为三个子阶段 commit×××Effects commit×××Effects_begin commit×××Effects_complete commit×××Effects 该函数是每个子阶段的入口函数finishedWor会作为firstChild参数传进去相关代码如下 function commit×××Effects(root,firstChild){ nextEffects firstChild; // 省略标记全局变量 commit×××Effects_begin(); // 省略重置全局变量 }因此在该函数中主要的工作是将firstChild赋值给全局变量nextEffects 然后执行commit×××Effects_begin。 commit×××Effects_begin 向下遍历FiberNode遍历的时候直到满足如下条件之一的FiberNode 当前的FiberNode的子FiberNode不包含该子阶段对应的flags当前的FiberNode不存在子FiberNode 接下来会对目标FiberNode执行commit×××Effects_complete方法。 commit×××Effects_complete 该方法针对flags做具体的操作主要包含以下三个步骤 对当前FiberNode执行flags对应的操作也就是执行commit×××EffectsOnFiber对当前FiberNode存在兄弟节点则对兄弟节点执行commit×××Effects_begin如不存在兄弟FiberNode则对父节点执行commit×××Effects_complete 总结一下每个阶段都会以DFS原进行遍历最终会在commit×××EffectsOnFiber针对不同的flags做出不同的处理。 before mutation阶段: before mutation阶段的主要工作发生在commitBeforeMutationEffects_complete中的commitBeforeMutationEffectsOnFiber方法这个方法主要是处理如两种类型的FiberNode ClassComponent:执行getSnapshotBeforeUpdateHostRoot: 清空HostRoot挂载的内容方便mutation阶段进行渲染 mutation阶段: 对于HostComponentmutation阶段的主要工作是对Dom元素的增删改查 删除Dom元素 删除dom的操作发生在commitMutationsEffects_begin方法中首先会拿到deletions数组,然后遍历该数组进行删除操作对应删除dom的方法为commitDeletion commitDeletion(root, nextEffect, renderPriorityLevel);commitDeletion内部的完整逻辑还是比较复杂的因为删除一个dom元素时不是删除就删除的还需要考虑以下几点 其子树中所有组件的unmount逻辑子树中所有ref属性的卸载操作其子树中所有Effect相关的Hook的destory回调的执行 div SomeClassComponent/ div ref{divRef} SomeFunctionsComponents / /div /div当删除最外层的div这个Dom元素时需要考虑 执行SomeClassComponent类组件对应的componentWillUnmount方法执行SomeFunctionsComponents 函数组件对应的useEffectuseLayoutEffect这些hook中对应的distory方法divRef的卸载操作 整个删除都是DFS顺序遍历每个子树的FiberNode,执行对应的操作 插入、移动Dom元素 上面的删除是在commitMutationsEffects_begin方法中执行的而插入和移动dom元素是在commitMutationsEffects_complete中的commitMutationsEffectsOnFiber方法里面执行的 Placement flag对应的操作方法为CommitPlacement,整个CommitPlacement可以分为三个步骤 从当前FiberNode向上遍历获取第一个类型为HostComponentHostRootHostPortal三者之一的祖先FiberNode,其对应的Dom元素是执行Dom操作的目标元素的父级DOM元素获取用于执行parentNode.insertBefore(child,before)方法before对应的DOM元素执行parentNode.insertBefore方法(存在before)或者parentNode.appendChild方法不存在before 对于还没有插入的DOM元素(对应的就是mount场景)inserBefore会将目标Dom元素插入到before之前appendChild会将目标DOM元素最为父DOM元素作为父DOM元素的最后一个子元素插入 对于ui中已经存在的DOM元素(对应的就是mount场景)inserBefore会将目标Dom元素移动到before之前appendChild会将目标DOM元素移动到同级最后 更新Dom元素 更新dom元素最主要的工作是更新对应的属性执行的方法是commitWork 其中变化的属性会以key,value相邻的形式存在FiberNode.updateQueue最终在fiberNode.updateQueue里面所保存的要变化的属性就会在一个名为updateDOMProperties方法被遍历然后进行处理这里的处理主要是处理如下的四种数据 style属性innerHTML直接文本节点变化其他元素属性 当mutations阶段中的主要工作完成后在进入layout阶段之前会完成Fiber Tree的切换 root.current finishedWorklayout 阶段 有关dom元素的操作在mutations中已经结束了。 该阶段主要工作几种在commitLayoutEffectOnFiber方法中在该方法内部会针对不同的FiberNode执行不同的操作 对于ClassComponent该阶段执行componentDidMount/update方法对于FunctionComponent,该阶段执行useLayoutEffect的回调函数。
http://www.w-s-a.com/news/568431/

相关文章:

  • 网站开发 外包空心找回微信
  • 长沙市网站推广多少钱网站开发流程图和介绍
  • 网站后缀net施工企业自建自用的工程可以不进行招标是否正确
  • 鄂尔多斯市住房和城乡建设厅网站帮别人做网站赚钱6
  • 宜选科技就是帮人做网站动漫制作专业主修课程
  • 怎么做网站免费的教程温州捷创网站建设
  • 做免费推广的网站有哪些深圳华强北最新消息
  • 电子商务网站建设规划开题报告桂林漓江景区游玩攻略
  • 程序员参与洗钱网站建设做视频网站需要多少钱
  • 网站建设背景是什么企业邮箱怎么写
  • 山东省建设资格中心网站iis wordpress安装教程
  • 做的网站 显示乱码怎么做微信小程序平台
  • 怎样建设打字网站怎样增加网站浏览量
  • 网站建设方案的征求意见网站主机免备案
  • 共享农业网站建设郑州市建网站
  • 成都网站建设四川冠辰网站建设带会员系统的网站模板
  • 水果网站建设方案书wordpress get_the_category
  • 第一ppt网站官网买域名价格
  • 网站 报价单自己做的网站如何上传
  • 天津网站建立辽宁建设工程信息网2017年定额人工费系数
  • 柳州网站优化搜索引擎优化方法案例
  • 什么网站比较少人做响应式网站开发周期
  • 公司网站欢迎语工作期间员工花钱做的网站
  • 新网站该如何做网站优化呢网络营销网站设计
  • 旅游门户网站模板下载做策划网站推广怎么写简历
  • 建设隔离变压器移动网站wordpress动态导航
  • 平潭建设局网站中国免费素材网
  • 虚拟主机可以做视频视频网站吗做爰全过程免费的视频网站有声音
  • 专业做家电经销的网站网络管理系统有哪几部分组成
  • 自学网站编程网站名称需要注册吗