redux-smart-actions
Version:
The fastest way to write Redux actions
39 lines (33 loc) • 972 B
JavaScript
var TYPES_DELIMITER = '@@';
export var joinTypes = function joinTypes() {
for (var _len = arguments.length, types = new Array(_len), _key = 0; _key < _len; _key++) {
types[_key] = arguments[_key];
}
return types.map(function (type) {
return type.toString();
}).join(TYPES_DELIMITER);
};
export var createReducer = function createReducer(handlers, defaultState) {
handlers = Object.entries(handlers).reduce(function (prev, _ref) {
var type = _ref[0],
handler = _ref[1];
if (type.includes(TYPES_DELIMITER)) {
type.split(TYPES_DELIMITER).forEach(function (singleType) {
prev[singleType] = handler;
});
} else {
prev[type.toString()] = handler;
}
return prev;
}, {});
return function (state, action) {
if (state === undefined) {
return defaultState;
}
var handler = handlers[action.type];
if (handler) {
return handler(state, action);
}
return state;
};
};