node package manager

fluxstore2

fluxstore

Store class for facebook flux, generates event methods automatically, more simple dispatch listener

Generates for you these methods:

addYourEventListener, removeYourEventListener, emitYourEvent

With this module you can write store this way::

const AppDispatcher = require('../dispatcher/app_dispatcher');
const SampleConstants = require('../constants/sample_constants');
const FluxStore = require('fluxstore')
 
class SampleStore extends FluxStore {
  getEvents() {
    return ['create', 'change', 'createError', 'addTag'];
  }
  create(data) {
    // ... 
  }
 
  addTag(linkId, tag) {
    // ... 
  }
 
 
 
  getAll() {
    // ... 
  }
 
  destroy(link) {
    // ... 
  }
 
  connections(connect) {
    connect(SampleConstants.SAMPLE_CREATE, (action) => {
      this.create(action.data);
      this.emitChange();
      this.emitCreate();
    });
    connect(SampleConstants.SAMPLE_CREATE_ERROR, this.emitCreateError);
    connect(SampleConstants.SAMPLE_DESTROY, this.destroy);
    connect(SampleConstants.SAMPLE_ADD_TAG, ({link, tag}) => {
      this.addTag(link.id, tag);
      this.emitChange();
      this.emitAddTag();
    });
  }
 
};
 
let store = new SampleStore(AppDispatcher);
 
module.exports = store;

and in your component:

 
var SampleComponent = React.createClass({
  /// ... 
  componentDidMount: function() {
    SampleStore.addChangePathListener(this._onChangePath);
    SampleStore.addAddTagListener(this._onAddTag);
    SampleStore.addMobileUpdateListener(this._onMobileUpdate);
  },
  componentWillUnmount: function() {
    SampleStore.removeChangePathListener(this._onChangePath);
    SampleStore.removeAddTagListener(this._onAddTag);
    SampleStore.removeMobileUpdateListener(this._onMobileUpdate);
  },
  /// ... 
})