反应:何时使用基于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
,它为您处理浅层道具比较。 阅读更多