我最近一直在学习React钩子,目前正面临useState
。我知道这是在功能组件中使用状态的一种方式,但是我想知道将React.PureComponent
与this.state
一起使用到底有什么真正的好处?
现在使用PureComponent
代替useState
或useEffect
真的是不好的做法吗?这会使应用程序“更快”吗?
我知道这个问题听起来很愚蠢,因为useState
是新手,但我只是需要一个合理的理由将旧组件重构为这种新模式?
答案 0 :(得分:3)
我认为好处不多,但有很多陷阱(我在项目中仅使用钩子已有一段时间了):
好东西:
this
周围没有混乱坏东西:
this
周围引起一些更复杂的问题,例如:答案 1 :(得分:0)
我建议您观看React Today and Tomorrow and 90% Cleaner React With Hooks
另外,您可以阅读Introducing Hooks
根据使用pureComponent,pureComponent类似于Class的Component,请查看classes confuse both people and machines部分以了解为什么功能比类更好。
答案 2 :(得分:0)
TL&DR:无需重构所有旧组件。
useState
和其他响应钩子介绍了一种实现组件的新方法。它们可以帮助简化代码的可重用性。您可以将特定的逻辑移至自定义的挂钩,并在多个组件中使用它。自定义挂钩可以调用useState
,并且它们不可能从其他useState
调用中破坏状态。它使您可以更明智地拆分组件逻辑。
因此,使用useState
有两个主要好处:代码可重用性和代码拆分。
何时最好重构旧组件? 假设您有3-4个遗留组件,它们制作相似的东西,但是重用代码很复杂。您可以将此类组件重写为钩子,将所有通用逻辑移至自定义钩子,然后在所有这些组件中重用此钩子。
此外,如果您还有其他疑问,可以看看这篇https://reactjs.org/docs/hooks-intro.html文章
还有一件重要的事情:“功能组件世界”中的PureComponent等效项是用React.memo包装功能。
答案 3 :(得分:0)
useState
,this.state
和PureComponent
是不同的术语,不必混淆在一起。如您所知,useState
是处理功能组件中状态的一种方式,而您将this.state
用于类组件。
就PureComponent
而言,它用于优化渲染,您可以将React.memo
用于功能组件。
就重构而言,没有必要这样做,因为Class组件将继续存在,并且React社区建议您不要重构先前的代码。