建设h网站风险大吗,购物app大全,软件开发赚钱多吗,wordpress问答社区模板对React-Fiber的理解#xff0c;它解决了什么问题#xff1f;Fiber用来解决什么问题#xff1f;Fiber是什么#xff1f;Fiber是如何解决问题的#xff1f;Fiber用来解决什么问题#xff1f; JavaScript引擎和页面渲染引擎两个线程是互斥的#xff0c;当其中一个线程执行…
对React-Fiber的理解它解决了什么问题Fiber用来解决什么问题Fiber是什么Fiber是如何解决问题的Fiber用来解决什么问题 JavaScript引擎和页面渲染引擎两个线程是互斥的当其中一个线程执行时另一个线程只能挂起等待 如果 JavaScript 线程长时间地占用了主线程那么渲染层面的更新就不得不长时间地等待界面长时间不更新会导致页面响应度变差用户可能会感觉到卡顿 而这也正是 React 15 的 Stack Reconciler所面临的问题当 React在渲染组件时从开始到渲染完成整个过程是一气呵成的无法中断 如果组件较大那么js线程会一直执行然后等到整棵VDOM树计算完成后才会交给渲染的线程 这就会导致一些用户交互、动画等任务无法立即得到处理导致卡顿的情况 Fiber是什么
在react中主要做了以下的操作
为每个增加了优先级优先级高的任务可以中断低优先级的任务。然后再重新注意是重新执行优先级低的任务增加了异步任务调用requestIdleCallback api浏览器空闲的时候执行dom diff树变成了链表一个dom对应两个fiber一个链表对应两个队列这都是为找到被中断的任务重新执行
Fiber是如何解决问题的
Fiber把渲染更新过程拆分成多个子任务每次只做一小部分做完看是否还有剩余时间如果有继续下一个任务如果没有挂起当前任务将时间控制权交给主线程等主线程不忙的时候在继续执行
即可以中断与恢复恢复后也可以复用之前的中间状态并给不同的任务赋予不同的优先级其中每个任务更新单元为 React Element 对应的 Fiber节点