核心逻辑(优势)
- class更简单的逻辑复用
- 关注分离(拆分大逻辑到多个小逻辑)
在React 函数组件中,每次UI变化,都是通过重新执行整个函数来完成的,所以它和class组件的区别在于:函数组件没有一个直接的方式在多次渲染中维持一个状态。
但是函数组件有自己的办法解决状态问题:hook(useCallback、useMemo、useRef、useContent、)
关于class
- 一旦组件有自己的状态,意味着组件如果重新创建,就需要有恢复状态的过程,这让组件变得复杂
- state中永远不要保存可以通过计算得到的值
关于hook
- 使用hook后,要忘记class那套生命周期
- 遇到需求,直接考虑用hook怎么做
- 硬性规则:
- 只能在函数的顶级作用域里面使用
- 只能在函数组件或者其他hook里面使用