Hooks

284 阅读1分钟

1.首先框架服务于业务,业务中很难避免的问题——逻辑复用,同样的逻辑功能同样的组件,在不一样的场景下我们不得去写2+次,避免耦合,出现了minix, render props、高阶组件实现逻辑可复用,但是都有一些副作用。

  • minix都有相同依赖会产生冲突,继续的增加state降低了可预测性。

  • 高阶组件层层包裹组件,提高了复杂度和代码可读性对于外层是一个黑盒

  • render props 使用过多影响性能,不好维护,一样会嵌套很深

  •   而Hooks使用函数式组件,实现了复杂逻辑的内部封装
      
    
  • 逻辑代码的复用

  • 减小了代码体积

  • 没有 this 的烦恼

2.Hoos原理

  • React Hook 底层是基于链表实现,调用的条件是每次组件被 render 的时候都会顺序执行所有的 Hooks。

3.所解决的问题

  • 函数式组件不能拥有自己的state,在hooks之前只有函数式组件都是无状态的,只能通过props来获取父组件的状态,但是hook内部提供了useState来维护函数组件内部的状态。

  • 函数组件中不能监听组件的生命周期。useEffect聚合了多个生命周期函数。

  • class组件中生命周期较为复杂(在15版本到16版本的变化大)。

  • class组件逻辑难以复用(HOC,render props)。

4.hooks的好处

  • 写法简介
  • 更方便的清除副作用
  • 逻辑复用方便,class呢有HOC以及render props。react hooks则使用新建新的hooks来解决

5.组件优化

  • hooks 使用 useMemo useCallBack
  • class使用PureComponent

juejin.cn/post/684490…