有状态组件或容器或基于类的组件曾经支持 React Hooks 的功能,因此我们不需要在有状态组件中仅在无状态组件中使用 React Hooks。
一些附加信息
什么是 React Hooks?
那么什么是钩子呢?Well hooks 是一种新方式,或者为我们提供了一种编写组件的新方式。
到目前为止,我们当然有功能和基于类的组件,对吧?功能组件接收道具,然后您返回一些应该呈现到屏幕上的 JSX 代码。
它们非常适合演示,因此用于呈现 UI 部分,而不是业务逻辑,它们通常专注于每个组件的一个或几个目的。
另一方面,基于类的组件也将接收道具,但它们也具有这种内部状态。因此,基于类的组件是实际持有我们大部分业务逻辑的组件,所以对于业务逻辑,我的意思是我们发出 HTTP 请求,我们需要处理响应并更改应用程序的内部状态,或者可能即使没有 HTTP。用户填写表单,我们想在屏幕上的某个地方显示它,我们需要状态,我们需要基于类的组件,因此我们通常也使用基于类的组件来编排我们的其他组件并传递我们的状态例如,作为功能组件的道具。
现在我们在这种分离中遇到了一个问题,它增加了所有好处,但我们遇到的一个问题是从一种组件形式转换为另一种形式很烦人。这并不难,但很烦人。
如果您发现自己需要将功能组件转换为基于类的组件,则需要大量输入并且总是输入相同的内容,因此很烦人。
引号中一个更大的问题是生命周期钩子很难正确使用。
显然,添加 componentDidMount 并在其中执行一些代码并不难,但是知道要使用哪个生命周期钩子,何时以及如何正确使用它,这可能具有挑战性,尤其是在更复杂的应用程序中,无论如何,如果我们有一种创建组件的方法,然后该超级组件可以处理状态和副作用(如 HTTP 请求)并呈现用户界面?
嗯,这正是钩子的全部意义所在。Hooks 为我们提供了一种创建功能组件的新方法,这很重要。