据我所知,钩子只是向function
组件添加状态(和生命周期方法(的一种方式。
此常见问题解答:
从长远来看,我们预计 Hooks 将成为人们编写 React 组件的主要方式。
https://reactjs.org/docs/hooks-faq.html#should-i-use-hooks-classes-or-a-mix-of-both
和这个文档片段:
钩子允许您根据相关部分
将一个组件拆分为较小的函数 https://reactjs.org/docs/hooks-intro.html
让我作为 React 初学者有点困惑。
就好像我必须从钩子而不是元素和组件的角度来考虑我的应用程序。
React 没有删除组件,但引用暗示钩子将取代 组件作为代码重用的主要来源。
在 React 中,元素和组件还能作为主要抽象来谈论吗?
组件的概念并没有消失,只是它们的编写方式正在发生变化。
你引用的第二行
钩子允许您根据相关的部分将一个组件拆分为更小的函数
在我看来措辞很差,应该说"钩子让你将一个类组件拆分为更小的功能组件......">
因此,与其使用一个整体类来处理 componentDidMount、componentDidUpdate 等方法中的所有状态和生命周期逻辑,不如拆分关注区域并拥有较小的功能组件,这些组件只关心与自身直接相关的事物。
编辑:钩子介绍文档中的这个片段可能会有所帮助:
钩子不会取代你对 React 概念的了解。相反,Hooks 为你已经知道的 React 概念提供了一个更直接的 API:props、state、context、refs 和生命周期。正如我们稍后将展示的那样,Hooks 还提供了一种新的强大方法来组合它们。
目前,在 React 中构建组件有两种方法:
- 类组件
- 功能组件
您可以在此处查看它们。你构建它的方式是不同的。如果您接近类组件,这意味着您需要使用对象的原型。
另一方面,如果你选择作为一个功能组件,这意味着你从 React 请求的所有内容都是调用一个函数,而不是使用原型。所有这些来自 JS 的链接都会降低性能,这就是为什么 React 核心团队决定进入纯粹的功能方向:它可以表现得更好,并且它使阅读它变得更加简单(一旦你习惯了它(。
关于第二个报价。这是一种展示函数式编程相对于类的更多好处的方法。它们更灵活,可以有更好的构图。
最后补充一点:接近功能组件并不意味着你可以忽略学习类组件。仍然有很多应用程序带有一些遗留代码。我建议同时学习两者,并且每当需要创建新组件时,请接近功能组件范式。