Hooks
关于 Hooks 相关知识点总结, 持续更新中……
Hooks 解决了什么问题
首先,hooks 使用场景是函数式组件中,如果没有 hooks, 那么函数组件能做的只有接收 props、渲染,外加触发父组件传过来的事件。那么导致的所有的逻辑都只能在 class 组件中来定义实现,这样就会使得 class 组件内部错综复杂。
class 组件是一种面向对象的体现,class 组件之间的状态会随着功能、逻辑的复杂度变得越来越臃肿,维护起来不是很高效,而且不利于后期的 tree shaking。
综上所述,就出现了 hooks, 所以出现的本质原因是:
- 可以让函数组件做类组建可以做的事情,可以管理自己的状态,处理一些副作用,获取 ref,同时还能做数据缓存。
- 解决逻辑复用难的问题。
- 放弃面向对象编程,拥抱函数式编程。
hooks 只能在顶层,且不能在条件,函数,循环,嵌套中使用
具体地说,不要在循环、嵌套、条件语句中使用 Hook——因为这些动态的语句很有可能会导致每次执行组件函数时调用 Hook 的顺序不能完全一致,导致 Hook 链表记录的数据失效。