高阶组件
HOC,一个函数,传入组件返回组件
书写形式:
- 普通形式
- 装饰器@decorator(xxx)
- 多层组合
都在什么场景下使用高阶?
- 属性代理:
- 操作props
- 操作组件实例(通过ref)
- 继承/劫持:
什么是React Hooks
在函数组件中使用state,副作用等
为什么不写class组件了呢?
- 组件的状态或者逻辑复用,通常都是HOC,render props等方式来做复用的,导致层级非常的冗余
- 有状态的组件庞大之后,变得难以拆分
- 比如事件监听的增加和取消,这种明明是同一块业务逻辑会被分散在两个生命周期中,只能从生命周期的维度去看
hooks的优势是什么呢?
对应以上的class组件缺点
- 自定义hook,易于业务逻辑和状态的拆分和封装,不改变组件的结构
hook的使用注意事项
- 只能在函数组件的最外层使用(不能在条件判断,循环中使用,为什么?)
- 副作用的依赖