📜  React Hooks 简介

📅  最后修改于: 2022-05-13 01:56:52.962000             🧑  作者: Mango

React Hooks 简介

什么是钩子?
Hooks 是 React 16.8 中的新增功能。它们让开发人员无需编写类即可使用状态和其他 React 特性 例如-组件的状态

需要注意的是,类内部不使用钩子。

为什么需要 Hooks?
引入 Hooks 的原因有很多,这取决于开发人员开发 React 产品的经验。其中一些如下:

  • 使用'this'关键字:第一个原因是 javascript 比 React 本身做的更多。要使用类,需要了解 'this' 关键字在 javascript 中的工作方式,这与它在其他语言中的工作方式非常不同。更容易理解道具、状态和单向数据流的概念,但使用“this”关键字可能会导致在实现类组件时遇到困难。还需要将事件处理程序绑定到类组件。 React 开发团队也观察到,类没有高效简洁,这导致热重载不可靠,这可以使用 Hooks 解决。
  • 可重用的有状态逻辑:这个原因涉及到 React 中的高级主题,例如高阶组件(HOC)和渲染道具模式。没有特定的方法可以将有状态的组件逻辑重用于 React。虽然这个问题可以通过使用 HOC 和渲染道具模式来解决,但它会导致代码库效率低下,这变得难以遵循,因为最终将组件包装在其他几个组件中以共享功能。 Hooks 让我们以更好、更简洁的方式共享有状态逻辑,而无需更改组件层次结构。
  • 简化复杂场景:在为复杂场景(例如数据获取和订阅事件)创建组件时,很可能并非所有相关代码都组织在一个地方,而是分散在不同的生命周期方法中。
    例如,数据、获取等操作通常在componentDidMountcomponentDidUpdate中完成,类似地,对于事件监听器,它在componentDidMountcomponentWillUnmount中完成。这些开发了一个场景,其中完全不同的代码(如数据获取和事件侦听器)最终位于同一代码块中。由于有状态逻辑,这也使得无法将组件制动为更小的组件。 Hooks 解决了这些问题,而不是基于生命周期方法强制拆分 Hooks 让您可以根据相关的部分将一个组件拆分为更小的函数。

使用钩子时要记住的重要事项:

  • Hooks 可用于 React 16.8 或更高版本。
  • Hooks 是完全可选的。根据您的需要将它部分用于一些组件或将整个项目基于它,而无需重写任何现有代码。
  • Hooks 不包含任何重大更改,并且 100% 向后兼容。
  • React 团队没有计划从 React 中删除类。
  • Hooks 不能在类组件中使用,但应用程序绝对可以将基于类的组件和功能组件与 Hooks 混合使用。
  • Hooks 不违反任何现有的 React 概念。相反,Hooks 提供了一个直接的 API 来响应 props、state、context、refs 和生命周期等概念。