Skip to content

Instantly share code, notes, and snippets.

@dmitry-vsl
Last active August 29, 2015 14:24
Show Gist options
  • Save dmitry-vsl/f2f68697c63c09a722b3 to your computer and use it in GitHub Desktop.
Save dmitry-vsl/f2f68697c63c09a722b3 to your computer and use it in GitHub Desktop.
/*
Миксин для React компонентов, который переопределяет shouldComponentUpdate на
основе глубокого сравнения старого и нового значения.
В миксин надо передать функцию, которая возвращает сравниваемый объект.
Пример использования:
```
var MyStore = require('myStore');
var FooComp = React.createClass({
mixins: [deepEqualsRender(() => MyStore.foo)]
});
```
*/
define(function(){
return function(selector){
function valueToStr(props){
return JSON.stringify(selector(props));
}
return {
componentDidMount(){
this.__prevDataStr = valueToStr(this.props);
},
shouldComponentUpdate(nextProps){
var nextDataStr = valueToStr(nextProps);
if(nextDataStr != this.__prevDataStr){
this.__prevDataStr = nextDataStr;
return true;
}else{
return false;
}
}
};
};
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment