Hook是React 16.8的新增特性。他可以让你在不编写class的情况下使用state以及其他的React特性 即:使用函数组件+Hook 来实现类组件的功能。因为函数组件this为undefined,React很多特性无法使用,如:state / setState / forceUpdate / contextType / 生命周期。。。

阮一峰学React钩子

Rect Hook特点

请记住Hook是:

  1. 完全可选的。你无需重写任何已有代码就可以在一些组件中尝试Hook。但是如果你不想,你不必现在就去学习或使用Hook。
  2. 100%向后兼容。Hook不包含任何破坏性改动。
  3. 现在可用。Hook已发布于v16.8.0。

没有计划从React中移除class。
Hook不会影响你对React概念的理解

动机

官方期望用函数组件+hook组件逐步代替类组件

  • 降低React的入门门口,增加开发者数量
  • 降低开发难度
  • 函数式编程
  1. 解决 在组件之间复用状态逻辑很难
    1. Hook 使得在无需修改组件结构的情况下复用状态逻辑
  2. 解决 复杂组件变得难以理解
    1. Hook 将组件中互相关联的部分拆分成更小的函数( 比如设置订阅或者数据请求数据 )
  3. 解决 难以理解的class
    1. Hook 使你在不使用 class 的情况下可以使用更多的 React 特性。

      React目前内置的Hook

      image.png