资讯专栏INFORMATION COLUMN

分析React fiber

Pluser / 822人阅读

摘要:把更新过程碎片化,每执行完一个更新过程,将控制权交给,它会根据优先级安排下一次的任务维护每一个分片的数据结构,就是。

React fiber

是最新react用的算法选择,其大概的介绍点击这里;

现在的局限

在现有React中,更新过程中是同步的(这个js代码的代码执行相关)

同步的

递归的

渲染和调和

fiber 目的

中断进程,后面还可以回到进程(work)中;

为各个进程(work)分优先级;

可以再次使用之前完成的进程(work);

终止后面不再使用的进程(work);

In order to do any of this, we first need a way to break work down into units. In one sense, that"s what a fiber is. A fiber represents a unit of work.

That"s the purpose of React Fiber. Fiber is reimplementation of the stack, specialized for React components. You can think of a single fiber as a virtual stack frame.

In concrete terms, a fiber is a JavaScript object that contains information about a component, its input, and its output.

fiber 实现方式

破解JavaScript中同步操作时间过长的方法其实很简单——分片。

React Fiber把更新过程碎片化,每执行完一个更新过程,将控制权交给react,它会根据优先级安排下一次的任务;

维护每一个分片的数据结构,就是Fiber。

参考文件

影响

在现有的React中,每个生命周期函数在一个加载或者更新过程中绝对只会被调用一次;在React Fiber中,不再是这样了,第一阶段中的生命周期函数在一次加载和更新过程中可能会被多次调用!

Reconciliation Phase:

componentWillMount

componentWillReceiveProps

shouldComponentUpdate

componentWillUpdate

这些在react fiber中可能执行多次

Commit Phase:

componentDidMount

componentDidUpdate

componentWillUnMount

这些只能执行一次

好处:

不会丢帧

每一帧都分开事务

事务完成时进行提交

可以取消事务优先级

坏处:

调试困难(react的堆栈信息本身就是反人类的)

很难了解问题原因

非及时更新

注意点:

fiber新的调度系统,setState都是异步的,所以:

错误的姿势

this.setState({
    a: this.state.a + this.props.b
});

正确的姿势

this.setState((a, b) => ({  
    a: prevState.a + props.b
}))
fiber 的进展:

http://isfiberreadyyet.com

欢迎来github上 start

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/89407.html

相关文章

  • React Fiber源码分析 第四篇(归纳总结)

    摘要:为什么网页性能会变高要回答这个问题,需要回头看是单线程的知识点。在分析的过程中,发现了的源码中使用了很多链式结构,回调链,任务链等,这个主要是为了增删时性能比较高 系列文章 React Fiber源码分析 第一篇 React Fiber源码分析 第二篇(同步模式) React Fiber源码分析 第三篇(异步状态) React Fiber源码分析 第四篇(归纳总结) 前言 Rea...

    jsdt 评论0 收藏0
  • 浅谈React Fiber

    摘要:因为版本将真正废弃这三生命周期到目前为止,的渲染机制遵循同步渲染首次渲染,更新时更新时卸载时期间每个周期函数各司其职,输入输出都是可预测,一路下来很顺畅。通过进一步观察可以发现,预废弃的三个生命周期函数都发生在虚拟的构建期间,也就是之前。 showImg(https://segmentfault.com/img/bVbweoj?w=559&h=300); 背景 前段时间准备前端招聘事项...

    izhuhaodev 评论0 收藏0
  • React Fiber源码分析 第二篇(同步模式)

    摘要:函数主要执行两个操作,一个是判断当前是否还有任务,如果没有,则从链中移除。 系列文章 React Fiber源码分析 第一篇 React Fiber源码分析 第二篇(同步模式) React Fiber源码分析 第三篇(异步状态) React Fiber源码分析 第四篇(归纳总结) 前言 React Fiber是React在V16版本中的大更新,利用了闲余时间看了一些源码,做个小记...

    OBKoro1 评论0 收藏0
  • React Fiber源码分析 第一篇

    摘要:系列文章源码分析第一篇源码分析第二篇同步模式源码分析第三篇异步状态源码分析第四篇归纳总结前言是在版本中的大更新,利用了闲余时间看了一些源码,做个小记录流程图源码分析先由编译,调用,入参为,打印出来可以看到,,分别代表着元素原生元素,回调函数 系列文章 React Fiber源码分析 第一篇 React Fiber源码分析 第二篇(同步模式) React Fiber源码分析 第三篇(...

    amc 评论0 收藏0
  • React Fiber源码分析 第三篇(异步状态)

    摘要:系列文章源码分析第一篇源码分析第二篇同步模式源码分析第三篇异步状态源码分析第四篇归纳总结前言是在版本中的大更新,利用了闲余时间看了一些源码,做个小记录流程图源码分析调用时,会调用的方法,同时将新的作为参数传进会先调用获取一个维护两个时间一个 系列文章 React Fiber源码分析 第一篇 React Fiber源码分析 第二篇(同步模式) React Fiber源码分析 第三篇(...

    worldligang 评论0 收藏0

发表评论

0条评论

Pluser

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<