为什么 create-react-app 将 App.js 组件更改为基于函数的组件?

beh*_*zad 7 reactjs create-react-app

正如我所注意到的,它似乎create-react-app改变了app.js基于函数组件的类组件,

知道他们为什么这样做吗?

Zek*_*dez 21

React 本身正在远离基于类的组件。

来自这个文档的引述:Introducing Hooks

除了使代码重用和代码组织更加困难之外,我们发现类可能是学习 React 的一大障碍。您必须了解它在 JavaScript 中的工作方式,这与它在大多数语言中的工作方式大不相同。您必须记住绑定事件处理程序。如果没有不稳定的语法建议,代码就会非常冗长。人们可以很好地理解道具、状态和自上而下的数据流,但仍然在类中挣扎。React 中函数和类组件之间的区别以及何时使用它们会导致即使在有经验的 React 开发人员之间也存在分歧。

此外,React 已经推出大约五年了,我们希望确保它在未来五年内保持相关性。正如 Svelte、Angular、Glimmer 等所表明的那样,组件的提前编译具有很大的未来潜力。特别是如果它不限于模板。最近,我们一直在尝试使用 Prepack 进行组件折叠,我们已经看到了有希望的早期结果。但是,我们发现类组件会鼓励无意的模式,使这些优化退回到较慢的路径。类也为当今的工具带来了问题。例如,类不能很好地缩小,并且它们使热重载不稳定且不可靠。我们希望提供一个 API,使代码更有可能停留在可优化路径上。

为了解决这些问题,Hooks 让你不用类就可以使用 React 的更多特性。从概念上讲,React 组件一直更接近于函数。Hooks 包含函数,但不牺牲 React 的实用精神。Hooks 提供了对命令式逃生舱口的访问,并且不需要您学习复杂的函数式或反应式编程技术。