这些例子有什么区别?
class MyPureComponent extends React.PureComponent {
}
和
import shallowCompare from 'react-addons-shallow-compare'`
class MyPureComponent extends React.Component {
shouldComponentUpdate(nextProps, nextState) {
return shallowCompare(this, nextProps, nextState)
}
}
答案 0 :(得分:0)
来自官方文档:
shallowCompare
是一个辅助函数,可以在使用带有React的ES6类时实现与PureComponent
相同的功能。
如果您的React组件的渲染函数是“纯粹的”(换句话说,它在相同的道具和状态下呈现相同的结果),您可以使用此辅助函数在某些情况下提高性能。
示例:
var shallowCompare = require('react-addons-shallow-compare');
export class SampleComponent extends React.Component {
shouldComponentUpdate(nextProps, nextState) {
return shallowCompare(this, nextProps, nextState);
}
render() {
return <div className={this.props.className}>foo</div>;
}
}
shallowCompare
对current props
和nextProps
对象以及当前状态和nextState
对象执行浅等式检查。
它通过iterating on the keys of the objects being compared and returning true when the values of a key in each object are not strictly equal
执行此操作。
shallowCompare
返回true,因此组件应该更新。
如果道具shallowCompare
和shallow comparison
都通过,则state
会返回false,因此该组件不需要update
。