React的PureComponent可以使用`setState`吗?

时间:2019-08-06 10:52:49

标签: reactjs

有人告诉我,React的纯组件可以具有state并可以使用setState进行更改。将状态为“纯”的组件感觉不对。这是对的吗?如果是这样的话,一个国家的情况如何?

如果这很重要,我在说的是从PureComponent类扩展并使用setState方法的基于类的组件

3 个答案:

答案 0 :(得分:1)

据我所知,在PureComponent上使用组件状态没有错。

毕竟,从PureComponent扩展仅添加shouldComponentUpdate的实现。那真的不会干扰您组件状态中的任何事情。

答案 1 :(得分:1)

是的,可以。

这纯粹是关于道具状态的,即,如果两个道具保持相同,则不会发生重新渲染。

引用the docs

  

如果您的React组件的ITESTEntity2函数在相同的道具和状态下呈现相同的结果,则在某些情况下您可以使用render()来提高性能。

答案 2 :(得分:1)

您可以使用纯组件以正常方式使用状态:

class Demo extends React.PureComponent {

constructor(props) {
    super(props);
    this.state = { 
        hello: 'world'
    };
}
...

默认情况下,普通的React.Component的shouldComponentUpdate设置为始终返回true。这很好,因为这意味着React总是会更新组件,以防万一要显示任何新数据。但是,这很糟糕,因为这意味着React可能会触发不必要的重新渲染。处理这些额外重新渲染的一种方法是更改​​shouldComponentUpdate函数,以检查何时需要更新组件。

另一种停止额外重新渲染的方法是使用PureComponent:more info