反应:何时使用基于ES6类的组件与function性ES6组件?

花了一些时间学习React后,我了解了创build组件的两个主要范例之间的区别

我的问题是我应该什么时候使用哪一个,为什么? 相互之间有什么好处/权衡?

ES6 / 7class:


import React, { Component } from 'react'; export class MyComponent extends Component { render() { return ( <div></div> ); } } 

function:


 const MyComponent = (props) => { return ( <div></div> ); } 

我想在没有任何状态被这个组件所操纵的情况下是function性的……但是这样吗?

我猜如果我使用任何生命周期方法,最好使用基于类的组件。

你有正确的想法。 如果你的组件没有做更多的事情,那就去实现一些道具和渲染。 你可以把它们看作是纯粹的function,因为它们总是呈现和行为一样,给予相同的道具。 另外,他们不关心生命周期方法或者拥有自己的内部状态。

因为它们是轻量级的,所以将这些简单的组件作为function组件来编写是非常标准

如果你的组件需要更多的function,比如保持状态,那就用类来代替。

更多信息: https : //facebook.github.io/react/docs/reusable-components.html#es6-classes

尽可能使用无状态函数(function组件)。 有些情况下您需要使用常规的React类:

  • 组件需要维护状态
  • 该组件重新渲染太多,你需要通过shouldComponentUpdate来控制
  • 你需要一个容器组件

UPDATE

现在有一个名为PureComponent的React类,您可以扩展(而不是Component ),它实现了它自己的shouldComponentUpdate ,它为您处理浅层道具比较。 阅读更多