47 lines
1.5 KiB
JavaScript
47 lines
1.5 KiB
JavaScript
|
/**
|
||
|
* Copyright 2013-present, Facebook, Inc.
|
||
|
* All rights reserved.
|
||
|
*
|
||
|
* This source code is licensed under the BSD-style license found in the
|
||
|
* LICENSE file in the root directory of this source tree. An additional grant
|
||
|
* of patent rights can be found in the PATENTS file in the same directory.
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
'use strict';
|
||
|
|
||
|
var shallowCompare = require('./shallowCompare');
|
||
|
|
||
|
/**
|
||
|
* If your React component's render function is "pure", e.g. it will render the
|
||
|
* same result given the same props and state, provide this mixin for a
|
||
|
* considerable performance boost.
|
||
|
*
|
||
|
* Most React components have pure render functions.
|
||
|
*
|
||
|
* Example:
|
||
|
*
|
||
|
* var ReactComponentWithPureRenderMixin =
|
||
|
* require('ReactComponentWithPureRenderMixin');
|
||
|
* React.createClass({
|
||
|
* mixins: [ReactComponentWithPureRenderMixin],
|
||
|
*
|
||
|
* render: function() {
|
||
|
* return <div className={this.props.className}>foo</div>;
|
||
|
* }
|
||
|
* });
|
||
|
*
|
||
|
* Note: This only checks shallow equality for props and state. If these contain
|
||
|
* complex data structures this mixin may have false-negatives for deeper
|
||
|
* differences. Only mixin to components which have simple props and state, or
|
||
|
* use `forceUpdate()` when you know deep data structures have changed.
|
||
|
*
|
||
|
* See https://facebook.github.io/react/docs/pure-render-mixin.html
|
||
|
*/
|
||
|
var ReactComponentWithPureRenderMixin = {
|
||
|
shouldComponentUpdate: function (nextProps, nextState) {
|
||
|
return shallowCompare(this, nextProps, nextState);
|
||
|
}
|
||
|
};
|
||
|
|
||
|
module.exports = ReactComponentWithPureRenderMixin;
|