我对React中的钩子和功能组件有概念上的疑问。
从概念上讲,您可以拥有3种类型的组件:
现在,在“功能组件”上使用钩子将为其添加状态,基本上我们将其转换为“引擎盖下的”类组件,这打破了纯净的概念(现在接收2个道具无法保证输出将对于不同的执行方式来说都是相同的,因为它可以被状态覆盖)。
所以问题是:
如果我在功能组件上使用钩子,它本身就不再是“功能组件”,而是“有状态的功能组件”吗?
答案 0 :(得分:0)
您可以区别于处理状态的“无状态功能组件”和“功能组件”。
我们可能会不再调用“功能组件”非类组件,因为这暗示着该组件是无状态且纯净的事实。 “功能组件”是一个更好的名称,因为它没有继承的含义,因为它可以保留状态和副作用。
答案 1 :(得分:0)
如果我在功能组件上使用钩子,那么它不再是 本身是“功能组件”,但“具有状态的功能组件” ?
正确!无状态(功能性)组件现在可以是有状态的。疯了吧?
就我个人而言,我认为他们对胡克斯的事情有点过头了。 UseState很好,但除了简单组件外,不应用于任何其他用途。大多数时候,当事情变得更加复杂时,我发现自己会转换回有状态组件。