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

时间:2019-09-24 13:01:29

标签: reactjs create-react-app

我注意到,看来create-react-app改变了基于功能组件的app.js类组件

知道为什么要这么做吗?

1 个答案:

答案 0 :(得分:3)

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

此文档的引号:Introducing Hooks

  

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

     

此外,React已经使用了大约五年,我们希望确保它在未来五年内保持相关性。正如Svelte,Angular,Glimmer和其他人所展示的,组件的提前编译具有很大的未来潜力。特别是不限于模板。最近,我们一直在尝试使用Prepack进行元件折叠,并且看到了可喜的早期结果。但是,我们发现类组件可以鼓励无意识的模式,这些模式会使这些优化退回到较慢的路径。课堂也提出了当今工具的问题。例如,类的效果不佳,并且使热重装变得片状且不可靠。我们希望提供一个API,使代码更有可能停留在可优化的路径上。

     

为解决这些问题,Hooks让您无需类即可使用React的更多功能。从概念上讲,React组件始终更接近功能。钩子包含功能,但不影响React的实践精神。钩子可以访问命令式逃生舱门,并且不需要学习复杂的功能或反应性编程技术。