高优先级知识点,需要熟练掌握。
useEffect 可以看成是 componentDidMount,componentDidUpdate 和 componentWillUnmount 三者的结合。
Fiber 的中文翻译叫纤程,与进程、线程同为程序执行过程,Fiber 就是比线程还要纤细的一个过程。纤程意在对渲染过程实现进行更加精细的控制。
Fiber 把一个渲染任务分解为多个渲染任务,而不是一次性完成,把每一个分割得很细的任务视作一个"执行单元",React 就会检查现在还剩多少时间,如果没有时间就将控制权让出去,故任务会被分散到多个帧里面,中间可以返回至主进程控制执行其他任务,最终实现更流畅的用户体验。
即是实现了"增量渲染",实现了可中断与恢复,恢复后也可以复用之前的中间状态,并给不同的任务赋予不同的优先级,其中每个任务更新单元为 React Element 对应的 Fiber 节点。
3.1 链表树 3.2 双缓冲双缓冲 3.3 时间切片 3.4 优先级调度
React 组件的生命周期方法分为三个阶段:挂载、更新、卸载。
constructor:组件初始化componentWillMount(已废弃):组件挂载前调用componentDidMount:组件挂载后调用,适合进行 DOM 操作或数据请求componentWillReceiveProps(已废弃):父组件传递新的 props 时调用shouldComponentUpdate:判断组件是否需要重新渲染componentWillUpdate(已废弃):组件更新前调用componentDidUpdate:组件更新后调用componentWillUnmount:组件卸载前调用,适合清理定时器、事件监听等注意:新版 React 推荐使用
componentDidMount、shouldComponentUpdate、componentDidUpdate、componentWillUnmount,并用 Hooks 替代部分生命周期方法。