有人告诉我,React的纯组件可以具有state
并可以使用setState
进行更改。将状态为“纯”的组件感觉不对。这是对的吗?如果是这样的话,一个国家的情况如何?
如果这很重要,我在说的是从PureComponent
类扩展并使用setState
方法的基于类的组件
答案 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