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.
43 lines
1.6 KiB
43 lines
1.6 KiB
11 years ago
|
---
|
||
|
id: pure-render-mixin
|
||
|
title: PureRenderMixin
|
||
9 years ago
|
permalink: docs/pure-render-mixin.html
|
||
8 years ago
|
layout: docs
|
||
|
category: Add-Ons
|
||
11 years ago
|
---
|
||
|
|
||
8 years ago
|
> Note:
|
||
|
> `PureRenderMixin` is a legacy add-on. Use [`React.PureComponent`](/react/docs/react-api.html#react.purecomponent) instead.
|
||
|
|
||
|
**Importing**
|
||
|
|
||
|
```javascript
|
||
|
import PureRenderMixin from 'react-addons-pure-render-mixin' // ES6
|
||
|
var PureRenderMixin = require('react-addons-pure-render-mixin') // ES5 with npm
|
||
|
var PureRenderMixin = React.addons.PureRenderMixin; // ES5 with react-with-addons.js
|
||
|
```
|
||
|
|
||
|
## Overview
|
||
|
|
||
|
If your React component's render function renders the same result given the same props and state, you can use this mixin for a performance boost in some cases.
|
||
11 years ago
|
|
||
|
Example:
|
||
|
|
||
|
```js
|
||
|
React.createClass({
|
||
|
mixins: [PureRenderMixin],
|
||
|
|
||
|
render: function() {
|
||
|
return <div className={this.props.className}>foo</div>;
|
||
|
}
|
||
|
});
|
||
|
```
|
||
|
|
||
|
Under the hood, the mixin implements [shouldComponentUpdate](/react/docs/component-specs.html#updating-shouldcomponentupdate), in which it compares the current props and state with the next ones and returns `false` if the equalities pass.
|
||
|
|
||
|
> Note:
|
||
|
>
|
||
10 years ago
|
> This only shallowly compares the objects. If these contain complex data structures, it may produce false-negatives for deeper differences. Only mix into components which have simple props and state, or use `forceUpdate()` when you know deep data structures have changed. Or, consider using [immutable objects](https://facebook.github.io/immutable-js/) to facilitate fast comparisons of nested data.
|
||
11 years ago
|
>
|
||
|
> Furthermore, `shouldComponentUpdate` skips updates for the whole component subtree. Make sure all the children components are also "pure".
|