为啥 create-react-app 现在要为 App 使用一个函数组件?

Posted

技术标签:

【中文标题】为啥 create-react-app 现在要为 App 使用一个函数组件?【英文标题】:Why does create-react-app now use a function component for App?为什么 create-react-app 现在要为 App 使用一个函数组件? 【发布时间】:2019-09-17 06:30:42 【问题描述】:

曾经是:

class App extends Components
  //...

现在create-react-appApp.js 中有这个:

function App()
  //...

有人知道为什么要进行这种更改吗?他们是在暗示我们不应该在 App 中有状态吗?

【问题讨论】:

【参考方案1】:

由于在 React 中引入了钩子,您可以在函数组件中拥有状态(参见useState)。

根据React 16.x roadmap post的说法,将类组件慢慢过渡到函数组件可能是一个不错的举措:

Hooks 不会弃用类。但是,如果 Hooks 成功,那么在未来的主要版本中,类支持可能会转移到单独的包中,从而减少 React 的默认包大小。

【讨论】:

实际上它们被称为 function 组件,而不是功能组件。在某些情况下,类组件也往往具有功能性,即使它们是经典组件,也没有人称它们为经典;)【参考方案2】:

组件类的可重用性不是很好,它们缺乏可互换性。使用远离类组件并开始使用函数组件将是理想的。参考这个post

【讨论】:

以上是关于为啥 create-react-app 现在要为 App 使用一个函数组件?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 create-react-app 找不到我的 Sass 变量

为啥要为局部变量保留堆栈空间?

为啥要为一个属性指定不同的顶点格式?

为啥要为属性创建私有字段?

为啥要为 Docker 使用 AWS ECS 与 ElasticBeanstalk?

为啥要为结构化数据使用递归神经网络?