UNPKG

xcraft-reflux

Version:

A simple library for uni-directional dataflow application architecture inspired by ReactJS Flux

36 lines (29 loc) 1.13 kB
var ListenerMethods = require('reflux-core/lib/ListenerMethods'), ListenerMixin = require('./ListenerMixin'), _ = require('reflux-core/lib/utils'); module.exports = function(listenable, key, filterFunc) { _.throwIf(_.isFunction(key), 'Reflux.connectFilter() requires a key.'); return { getInitialState: function() { if (!_.isFunction(listenable.getInitialState)) { return {}; } // Filter initial payload from store. var result = filterFunc.call(this, listenable.getInitialState()); if (typeof(result) !== 'undefined') { return _.object([key], [result]); } else { return {}; } }, componentDidMount: function() { var me = this; _.extend(this, ListenerMethods); this.listenTo(listenable, function(value) { var result = filterFunc.call(me, value); me.setState(_.object([key], [result])); }); }, componentWillUnmount: ListenerMixin.componentWillUnmount }; };