Skip to content

Instantly share code, notes, and snippets.

@Teino1978-Corp
Last active November 12, 2015 00:15
Show Gist options
  • Save Teino1978-Corp/98d314bf87da430424c3 to your computer and use it in GitHub Desktop.
Save Teino1978-Corp/98d314bf87da430424c3 to your computer and use it in GitHub Desktop.
var EventEmitter = require('events').EventEmitter;
var fooEvents = new EventEmitter();
var Counter = React.createClass(){
mixins: [makeChangeEventMixin(fooEvents)],
getInitialState: function(){ return {count: 0} },
render: function(){return <div onClick={this.handleClick}>{this.state.count}</div>},
handleClick: function(){
this.emitStateChange({count: this.state.count + 1});
}
};
var makeChangeEventMixin = function(emitter){
return {
componentDidMount: function(){
emitter.addListener('change', this.__makeChangeEventMixin_handler_);
},
componentWillUnmount: function(){
emitter.removeListener('change', this.__makeChangeEventMixin_handler_);
},
__makeChangeEventMixin_handler_: function(payload){
this.setState(payload);
},
emitStateChange: function(payload){
emitter.emit('change', payload);
}
};
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment