到目前为止,我们已经习惯了Flux流,其中数据通过道具输入到组件中。因此,您可以查看Props签名,看看组件要求是什么。
钩子是一个了不起的功能,但是当我们转换到它们时,我发现它们为依赖关系提供了另一个入口,这是很难管理的,因为你必须查看实际的组件代码才能看到它。
当然,我们只能在容器组件中使用Hooks,但我觉得他们的一些主要卖点是它们减少嵌套和HOC的能力。
决定哪个组件应该使用钩子哪个应该使用渲染道具的最佳实践(当前)是什么?
根据React FAQs钩子可以作为renderProps
和HOCs
的替代品,但可以与它们共存
通常,渲染道具和高阶组件只渲染一个孩子。我们认为Hooks是一种更简单的服务此用例的方法。两种模式仍然存在一个位置(例如,虚拟滚动组件可能具有renderItem prop,或者可视容器组件可能具有其自己的DOM结构)。但在大多数情况下,Hooks就足够了,可以帮助减少树中的嵌套。
钩子允许功能组件中的有状态逻辑,并且类似于React中的类组件。
钩子更难管理,因为你必须查看实际的组件代码才能看到它。
事实并非如此,因为您可以在自定义钩子中提取HOC或renderProps中的自定义逻辑并查找其实现,而不是了解实际组件中实际发生的情况。
钩子和HOC是不同的编程模型,比较它们似乎就像比较橙子和苹果。
TL; DR
根据经验,当我想要组件的条件渲染时(如果条件:渲染A,否则渲染B),我使用HOC,否则,我使用钩子。那只是我的意见。
Hoks To
HOCs Cons
x
。HOCs Pro&Con两者
Hooks Pros
钩子缺点