我找不到源,但是在react文档中有一个明确的通知,其中指出arrow函数,类声明和对象文字与react有关。我觉得仍然有些细微差别。在什么情况下应使用哪种格式?谢谢。
CompA = ()=> {}
class CompB extends React.Component {}
const CompC= () => {}
(请允许我在几个小时内阅读/回复答案/评论。)
答案 0 :(得分:1)
CompA = ()=> {}
和const CompC= () => {}
都是相同的,被称为功能组件或无状态组件。
class CompB extends React.Component {}
这种类型称为类组件或有状态组件,您可以在其中使用它们来响应生命周期的方法。
功能组件只是JavaScript函数。它们接受一个可选输入,我们称为props
。
当您不想使用状态而只想显示数据时,则可以使用功能组件。
选择类组件而不是功能组件的主要原因是它们可以具有state
。
答案 1 :(得分:1)
CompA = ()=> {}
是无状态组件。它没有状态,没有状态,并且没有类似componentWillMount
的事件。编写和阅读更为简单。另外,它应该更快,但是它与旧版本的React具有相同的性能。不确定新版本,因为在v16中已重新实现React core。
class CompB extends React.Component {}
是一个类组件,应该在有组件状态或要处理其生命周期时使用它
此外,还有一个class CompB extends React.PureComponent {}
与Component
相同,但是仅在状态或道具更改时更新。如果您没有带有复杂对象的道具,这真的会更快,因为它会在渲染之前比较道具和状态。
也请看看这个答案 React functional components vs classical components