react-cqtoolbox
Version:
[![Travis][build-badge]][build] [![npm package][npm-badge]][npm] [![Coveralls][coveralls-badge]][coveralls]
31 lines (24 loc) • 900 B
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.shallowEqual = shallowEqual;
function shallowEqual(prev, next) {
if (prev === next) return true;
var prevKeys = Object.keys(prev);
var nextKeys = Object.keys(next);
if (prevKeys.length !== nextKeys.length) return false;
return prevKeys.every(function (key) {
return prev.hasOwnProperty(key) && prev[key] === next[key];
});
}
function PureRender(Component) {
Component.prototype.shouldComponentUpdate = function (nextProps, nextState) {
return PureRender.shouldComponentUpdate(nextProps, nextState, this.props, this.state);
};
return Component;
}
PureRender.shouldComponentUpdate = function (nextProps, nextState, preProps, preState) {
return !shallowEqual(preProps, nextProps) || !shallowEqual(preState, nextState);
};
exports.default = PureRender;