它们主要的区别就是对于状态更新渲染DOM,判断状态是否变化的条件不同。
Component:setState状态更新都会引起dom渲染
PureComponent:react有个方法优化了shouldComponentUpdate,提高了性能,就是当props或者state改变时,会引起dom重新渲染,这里值的注意的是,当state为数组,对象等引用类型的时候,如果引用没有发生改变,它会认为state是没有发生改变的,也就不会重新渲染。当引用发生变化Component和PureComponent都会引起重新渲染。
注意:
- 继承PureComponent时,不能再重写shouldComponentUpdate,否则会引发警告
- 继承PureComponent时,进行的是浅比较,也就是说,如果是引用类型的数据,只会比较是不是同一个地址,而不会比较具体这个地址存的数据是否完全一致
- 此外,React.PureComponent 的 shouldComponentUpate() 会忽略整个组件的子级。请确保所有的子级组件也是”Pure”的