React Fiber Architecture

441 阅读1分钟

背景 && frameBuffer

本质:A framebuffer (frame buffer, or sometimes framestore) is a portion of random-access memory (RAM) containing a bitmap that drives a video display

单缓存: 帧缓存区开辟一个屏幕绘图缓存区

大致分为两个操作:

  1. 读取缓存区的数据,绘制在页面上
  2. 向缓存去写数据
  • 优点:读写可同时进行,写入的数据,可立即显示在页面上~

  • 缺点:会出现画面撕裂,即屏幕上部分显示上一帧,部分下一帧~;原因:读缓存时,未写完~

为解决画面撕裂问题,双缓存来啦~

双缓存: 帧缓存区开辟两个屏幕绘图缓存区,交替使用,便于动画绘制;即读操作、写操作分别占用一个缓存区~

  • 优点: 解决了撕裂问题
  • 缺点:可能会存在16ms的延误(主流的屏幕刷新率都在 60Hz,那么渲染帧的间隔大约为16ms)

问题背景

react项目中:

原因: 一旦开始render,不能终止

期望: render可以拆分~

Fiber

目标: the ability to split rendering work into chunks and spread it out over multiple frames.

【思路】如果主线程一直被占用,则会导致页面卡顿~ 把一个耗时长的任务分成很多小片,每一个小片的运行时间很短,虽然总时间依然很长,但是在每个小片执行完之后,都给其他任务一个执行的机会,这样唯一的线程就不会被独占,其他任务依然有运行的机会

后面待我好好看看哈~

[参考文章]

  1. react-fiber-architecture
  2. React Fiber是什么