使用React挂钩和功能组件

时间:2019-08-15 15:36:45

标签: reactjs redux react-hooks

我对React中的钩子和功能组件有概念上的疑问。

从概念上讲,您可以拥有3种类型的组件:

  • 类组件
  • 功能组件
  • pureComponents(使用React备忘录或扩展PurComponent)

现在,在“功能组件”上使用钩子将为其添加状态,基本上我们将其转换为“引擎盖下的”类组件,这打破了纯净的概念(现在接收2个道具无法保证输出将对于不同的执行方式来说都是相同的,因为它可以被状态覆盖)。

所以问题是:

如果我在功能组件上使用钩子,它本身就不再是“功能组件”,而是“有状态的功能组件”吗?

2 个答案:

答案 0 :(得分:0)

您可以区别于处理状态的“无状态功能组件”和“功能组件”。

我们可能会不再调用“功能组件”非类组件,因为这暗示着该组件是无状态且纯净的事实。 “功能组件”是一个更好的名称,因为它没有继承的含义,因为它可以保留状态和副作用。

答案 1 :(得分:0)

  

如果我在功能组件上使用钩子,那么它不再是   本身是“功能组件”,但“具有状态的功能组件”   ?

正确!无状态(功能性)组件现在可以是有状态的。疯了吧?

就我个人而言,我认为他们对胡克斯的事情有点过头了。 UseState很好,但除了简单组件外,不应用于任何其他用途。大多数时候,当事情变得更加复杂时,我发现自己会转换回有状态组件。