当前位置: 首页 > 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.hkea.cn/news/14340287/

相关文章:

  • 可以查企业的网站ui设计是什么工作
  • 回收手表的网站网站设计论文经济可行性分析
  • 广州多语言外贸网站建设支付网站建设会计分录
  • 聊城网站推广品牌wordpress主题虚拟资源交易平台
  • 爱站关键词查询安阳网站制作优化
  • 网站打赏怎么做的注册装修公司要多少钱才能注册
  • 网站不见了门禁考勤网站建设
  • 自建网站怎么做后台管理系统360信息流广告在哪里展示
  • 邢台好蜘蛛网站建设专业做红木家具网站
  • 石家庄网站建设外包网站编辑知识
  • 义乌网站建站移动互联网应用程序管理情况
  • 神一般的网页设计网站网络平台推广
  • 手机网站备案泰安人才招聘网最新招聘2023
  • 切片工具做网站怎么做安卓手机应用开发
  • 企业网站备案不通过网站和系统哪个好做
  • 源码网站wordpress标签设置主页
  • 厦门网站建设_wordpress 手机看不了视频
  • 射阳建设网站多少钱陕西网站建设开发
  • 查询网站备案时间甘谷县建设局网站
  • 深圳网站建设公司服务平台怎么样可以自己做网站
  • 网站界面设计描述一般网站用什么做的
  • 公司的网站设计定制品牌
  • 如何自己做视频网站wordpress插件dedecms
  • 西安网站推广招聘慧聪网首页
  • 绍兴网站建设哪家专业自己建设购物网站
  • 用织梦模板做网站中企建设网站
  • 建设积分商城网站泉州晋江网站建设
  • 可以做调查问卷的网站网站建设宣传册内容文档
  • wordpress关站石家庄心雨网站建设
  • 制作北京的名片wordpress建站优化