Skip to content

Instantly share code, notes, and snippets.

@ryanflorence
Created June 27, 2015 23:06
Show Gist options
  • Save ryanflorence/0e570866eb5685a889d0 to your computer and use it in GitHub Desktop.
Save ryanflorence/0e570866eb5685a889d0 to your computer and use it in GitHub Desktop.
// UserStore.js
import { EventEmitter } from 'events';
import assign from 'object-assign';
var events = new EventEmitter();
var CHANGE_EVENT = 'change';
var state = {
user: null
};
var UserStore = {
addChangeListener(fn) {
events.on(CHANGE_EVENT, fn);
},
removeChangeListener(fn) {
events.removeListener(CHANGE_EVENT, fn);
},
setState(newState) {
assign(state, newState);
events.emit(CHANGE_EVENT);
},
getState() {
return state;
},
logout() {
this.setState({ user: null });
}
};
// usage
import UserStore from './UserStore';
var NavBarUser = React.createClass({
componentDidMount() {
UserStore.addChangeListener(this.handleUserStoreChange);
},
componentWillUnmount() {
UserStore.removeChangeListener(this.handleUserStoreChange);
},
handleUserStoreChange() {
this.setState({
user: UserStore.getState()
});
},
render() {
//
}
});
var MainPage = React.createClass({
componentDidMount() {
UserStore.addChangeListener(this.handleUserStoreChange);
},
componentWillUnmount() {
UserStore.removeChangeListener(this.handleUserStoreChange);
},
handleUserStoreChange() {
this.setState({
user: UserStore.getState()
});
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment