You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
1.8 KiB
45 lines
1.8 KiB
9 years ago
|
---
|
||
|
id: shallow-compare
|
||
|
title: Shallow Compare
|
||
9 years ago
|
permalink: docs/shallow-compare.html
|
||
8 years ago
|
layout: docs
|
||
|
category: Reference
|
||
9 years ago
|
---
|
||
|
|
||
8 years ago
|
> Note:
|
||
|
> `shallowCompare` is a legacy add-on. Use [`React.PureComponent`](/react/docs/react-api.html#react.purecomponent) instead.
|
||
|
|
||
|
**Importing**
|
||
|
|
||
|
```javascript
|
||
|
import shallowCompare from 'react-addons-shallow-compare' // ES6
|
||
|
var shallowCompare = require('react-addons-shallow-compare') // ES5 with npm
|
||
|
var shallowCompare = React.addons.shallowCompare; // ES5 with react-with-addons.js
|
||
|
```
|
||
|
|
||
|
## Overview
|
||
|
|
||
|
Before [`React.PureComponent`](/react/docs/react-api.html#react.purecomponent) was introduced, `shallowCompare` was commonly used to achieve the same functionality as [`PureRenderMixin`](pure-render-mixin.html) while using ES6 classes with React.
|
||
9 years ago
|
|
||
|
If your React component's render function is "pure" (in other words, it renders the same result given the same props and state), you can use this helper function for a performance boost in some cases.
|
||
|
|
||
|
Example:
|
||
|
|
||
|
```js
|
||
|
export class SampleComponent extends React.Component {
|
||
|
shouldComponentUpdate(nextProps, nextState) {
|
||
|
return shallowCompare(this, nextProps, nextState);
|
||
|
}
|
||
|
|
||
|
render() {
|
||
|
return <div className={this.props.className}>foo</div>;
|
||
|
}
|
||
|
}
|
||
|
```
|
||
|
|
||
|
`shallowCompare` performs a shallow equality check on the current `props` and `nextProps` objects as well as the current `state` and `nextState` objects.
|
||
9 years ago
|
It does this by 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.
|
||
9 years ago
|
|
||
|
`shallowCompare` returns `true` if the shallow comparison for props or state fails and therefore the component should update.
|
||
|
`shallowCompare` returns `false` if the shallow comparison for props and state both pass and therefore the component does not need to update.
|