创建React组件时何时使用箭头函数vs类vs对象文字?

时间:2018-08-19 13:23:57

标签: reactjs

我找不到源,但是在react文档中有一个明确的通知,其中指出arrow函数,类声明和对象文字与react有关。我觉得仍然有些细微差别。在什么情况下应使用哪种格式?谢谢。

CompA = ()=> {}
class CompB extends React.Component {}
const CompC= () => {}

(请允许我在几个小时内阅读/回复答案/评论。)

2 个答案:

答案 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