我最近一直在学习React hooks,目前正在面对useState
。我知道这是在函数组件中使用状态的一种方式,但我想知道相较于使用this.state
和React.PureComponent
,真正的好处是什么?
现在使用useState
或useEffect
代替PureComponent
确实是一个更好的做法吗?这会让应用程序“更快”吗?
我知道这个问题听起来很蠢,因为useState
是新生力量,但我只需要一个有效的理由来将旧组件重构为这种新模式。
我最近一直在学习React hooks,目前正在面对useState
。我知道这是在函数组件中使用状态的一种方式,但我想知道相较于使用this.state
和React.PureComponent
,真正的好处是什么?
现在使用useState
或useEffect
代替PureComponent
确实是一个更好的做法吗?这会让应用程序“更快”吗?
我知道这个问题听起来很蠢,因为useState
是新生力量,但我只需要一个有效的理由来将旧组件重构为这种新模式。
编辑:我已经使用hooks一段时间并且非常喜欢它们(改变了我的看法),但是它增加了学习曲线,并且存在以下问题:
好处:
this
的混淆(在类中使用箭头函数也可以很容易地避免)坏处:
memo
、useCallback
、useMemo
、useRef
、useEffect
、useLayoutEffect
、useState
等。问一个初学者如何防抖回调 - 突然变成了一个困难的问题。this
的混淆换成更多的问题,例如:useRef
“通道”一些变量等)useRef
(我认为还有useCallback
)也会在每次渲染中默默地创建和丢弃以优先使用第一个创建的。副记:Solid框架具有更好的hooks实现,不需要依赖项
useState
和其他React Hooks引入了一种新的实现组件的方式。它们可以帮助简化代码的可重用性。您可以将特定的逻辑移动到自定义钩子中,并在多个组件中使用它。自定义钩子可以调用useState
,并且它们没有任何可能损坏其他useState
调用的状态。这使您能够更明智地拆分组件逻辑。useState
有两个主要好处:代码可重用性和代码拆分。useState
、this.state
和PureComponent
是不同的术语,不需要混淆在一起。正如您所了解的,useState
是在函数组件中处理状态的一种方式,而您使用this.state
来处理类组件。
就PureComponent
而言,它用于优化渲染,您可以为函数组件使用React.memo
来实现相同的目的。
此外,就重构而言,没有必要这样做,因为类组件将继续存在,react社区建议您不要重构之前的代码。
我建议你观看React 今天和明天以及使用 Hooks 实现 90% 更干净的 React。
此外,你还可以阅读介绍 Hooks。
关于使用 pureComponent,它类似于 Class 的 Component。请查看类混淆人和机器部分,了解为什么函数比类更好。