npm.io
0.0.5 • Published 11 years ago

reflux-store-cache-mixin

Licence
MIT
Version
0.0.5
Deps
3
Vulns
6
Weekly
0
Stars
1

reflux-store-cache-mixin

Reflux mixin for caching data.

Main usage is to reduce network calls for slowly changing data

Example


// Actions
import Reflux from 'reflux';

const testActions = Reflux.createActions({
  fetch: {
    children : [ 'completed', 'failed' ],
  },
});

export default testActions;

// Store
import Reflux from 'reflux';
import StoreCacheMixin from 'reflux-store-cache-mixin';
import { Map } from 'immutable';

export default Reflux.createStore({
  listenables : testActions,

  data : new Map(),

  mixins : [ StoreCacheMixin ],

  onFetch() {
      this.loadData('data', '*', (data, saveNewData) => {

        if (! data) {
          return fetchData()
            .tap(saveNewData)
            .then((nextData) => {
              this.data = nextData;
              return this.trigger(this.data);
            });
        }

        return this.trigger(this.data);

      });
  },
});