网站大量收购闲置独家精品文档,联系QQ:2885784924

react面经整理学习2.pdf

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

react⾯经

●react启动

○启动时创建3个全局对象,

■reactdomroot对象,属于react-dom,有render⽅法,引导react应⽤启动。

■fiberroot对象,属于react-reconciler,运⾏时的全局上下⽂,保存fiber构建过程中依赖的

全局状态。

■hostrootfiber对象,属于react-reconciler,react应⽤中第⼀个fiber,是fiber树根节点。

节点类型是hostroot。

●react-reconciler采⽤的fiber架构的优势

○⽀持增量渲染,将渲染任务拆分为⼩单元,分批执⾏。旧版本是⼀次性计算更新整个UI树,性

能瓶颈。

○fiber架构⽀持中断和恢复⼯作,且⽀持优先级任务处理。

○⽀持任务调度。旧版本没有。

○事务管理⽐较⽅便,将渲染任务拆分为独⽴的事务,可独⽴管理和控制。

●fiber架构原理

○fiber节点表示组件,指向⽗节点、⼦节点、兄弟节点。

○渲染过程分解为多个⼯作单元。⽀持增量操作。⽀持中断和恢复。

○⽀持任务调度,⽀持优先级。

○结合diff算法,计算新的fiber树,映射到dom。

●reactrender阶段,处理组件更新+⽣成虚拟DOM(fiber树)

○触发渲染,当⽤户交互/⽹络请求响应/内部状态变化,导致组件的状态属性变化,触发⼀次渲

染。

○fiber树的协调,为组件创建fiber节点,协调操作,遍历fiber树,对⽐新旧节点,计算最⼩更新

集合。更新fiber树。

○执⾏组件render⽅法,对每个fiber节点都执⾏render⽅法,返回虚拟DOM,包装成新的fiber节

点。代替旧的fiber节点,构建新fiber树。

○更新fiber节点,处理更新队列,标记更新类型。

○构建fiber树的副作⽤,搜集保存副作⽤,⽐如数据获取/事件监听,会在commit阶段应⽤到

DOM。

○完成render阶段,⽣成新的fiber树,提交到commit阶段进⾏实际DOM更新,包括副作⽤等实

际DOM操作。

1

●reactcommit阶段,将虚拟DOM应⽤到实际DOM+副作⽤操作。

○提交fiber树,准备处理更新。

○递归遍历fiber树,应⽤副作⽤操作。

■增删改实际DOM元素。effecttag。

■调⽤⽣命周期⽅法、执⾏副作⽤的回调。

●副作⽤回调在组件挂载和更新后执⾏,如数据获取/事件操作。

○更新fiber树,清理副作⽤标记。

■更新fiber节点属性,⽐如current指向新的fiber。

○浏览器进⾏布局计算和绘制,呈现⻚⾯内容。

●fiber的时间切⽚

○任务拆分为多个⼩的fiber处理单元,分配优先级。

○结合调度器scheduler,根据优先级和浏览器空闲时间进⾏调度。每个时间⽚结束会检查是否有

⾼优先级待处理。

○处理fiber节点的⼯作单元中⽀持中断(交互、滚动),⽀持恢复中断,继续处理。

●reactdom.createportal

○将元素渲染到指定dom节点上,元素依然在react组件树,遵守⽣命周期,也可以避免CSS影

响。⽀持顶层显示和避免层级⼲扰。

○适⽤于独⽴显示的组件,如模态框、下拉。

●context

○上下⽂,组件树中共享数据的⽅式,将数据传递给多个组件,避免层级传递。

○createcontext。创建上下⽂,返回对象,包含属性有provider、consumer。

■provider为组件,提供数据给后代组件。

■consumer⽤来订阅provider提供的数据的组件。

○usecontext,订阅createcontext创建的上下⽂。函数组件可以直

文档评论(0)

passer + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档