前端之React16版本的优点

230 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第4天,点击查看活动详情

1、React 16的优点

1)React 16
新的调度方式Fiber;生命周期;Context,严格模式,refs;portal;fragment;hook;suspense

  React核心分为三部分,分别是React Core(处理核心的apis,与终端平台解耦)、React render(渲染定义一个React tree)、Reconciler(负责diff算法,进行patch行为,可以被各种render公用,15版本之前用的是stack,新一带用得是filber,filber是为了解决之前React的问题,进行组件渲染的时候,从setState开始到渲染完成整个过程是同步的,如果需要渲染的组件比较庞大,js执行会阻塞主线程,会导致页面像一个度变差,使得react在动画、手势等应用中效果比较差,核心思想是让渲染有优先级,并且可中断,fiber协程是配合线程的一种控制流程的出让机制,ES6中的generator可以中断函数)。
  
  react16之前是递归算法,是先子元素b再父元素ab.willMountb.didMount,a.willMount,a.didMount
  
  react16之后Fiber架构,是扁平化的链表的数据结构,先进先出,先父再子,a.willMount,a.didMountb.willMountb.didMount
  
  react16 新增componentDidCatch(error,info),让开发者可以自主的处理错误信息。
  
  react16通过refs属性来操作真正的dom,React.createRef来取得ref对象,React.forwardRef,让父组件可以访问子组件的Ref,从而操作子组件的DOM。
  
  Hooks解决了什么问题?
  1、组件之间服用状态逻辑困难,复杂组件的render props,高阶组件,容易造成“嵌套地狱”。
  
  2、复杂组件难以理解,比如各种生命周期把业务拆的七零八碎。
  
  3、难以理解的class组件;this的问题。
  
  4、class组件的优缺点:优点是面向对象,缺点就是hook要解决的问题,hook主要把面向生命周期编程变成了面向业务逻辑编程。业务组件的封装方式可以修改为hooks+ui component