hook推出的动机主要是因为类组件有一下几个不足

    1. 组件之间复用公共逻辑比较麻烦,以前常见的提取组件公共逻辑的方式有高阶组件/renderProps等,但这些方式或多或少都对原有组件的代码组织方式有一定的破坏性
    2. 复杂组件变得难以理解(例如相同的逻辑可能要写在不同的生命周期钩子函数里面)
    3. 难以理解的class(比如对新手来见,class组件中的this不太好理解)。函数组件里面没有this了,开发过程中,一般推荐使用函数组件,开发起来简单

    新特性hook出现之后,函数组件就可以完全替代类组件,但是这并不是说react官方会抛弃类组件,react官方文档中也表明了没有计划会在react中移除class组件。

    • 注意:hook特性只能在函数组件中使用

    hook的起源 - 图1