React fiber分片的理解和剖析

fiber

主要功能是增量渲染:能够将渲染工作分成块并将其分散到多个帧上,

react 核心模块叫做reconsiler,其中就有diff算法

Reconciliation(调和):

每次render的时候都会生成一个虚拟dom树,和上一次的dom 树对比的过程就叫调和

对比dom树的过程从深度优先变为广度优先遍历,父节点发生改变就不再向后对比了,直接重新渲染(当父节点有多个后代节点,那么重新渲染的代价就特别大,所以这个时候就需要引入fiber分片)

react、vue的响应式原理(react 有分片,vue为什么不需要?)

在修改数据时,react需要调用setState方法,而vue直接修改变量就行。看起来只是两个框架的用法不同罢了,但响应式原理正在于此。

从底层实现来看修改数据:

在react中,组件的状态是不能被修改的,setState没有修改原来那块内存中的变量,而是去新开辟一块内存;而vue则是直接修改保存状态的那块原始内存。因为vue中虚拟dom指向的还是原来的那块原始内存,所以需要重新渲染的dom节点就只有那当前节点;而React 中新的虚拟dom 指向的是新的内存,所以后面的节点都需要重新渲染,这就是vue 不需要fiber 的原因
fiber 可以理解为一种数据结构,将 每个虚拟dom 转换成 一个fiber 分片,数据中有三个指针,一个指向父节点,一个指向兄弟节点,一个指向第一个子节点
fiber遍历的方式:先序遍历 在这里插入图片描述

redux 直接修改仓库数据,不通过dispatch, 页面是否会发生变化(不会,不通过dispatch页面内无法发生响应式变化)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值