UNPKG

combine-action-reducer

Version:

create action creator and reducer with one action-reduer

59 lines (58 loc) 1.69 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); /** * # 创建一个actionCreator from mapObj; * 设置子路径时, 使用了 '/'分割 */ function buildActionCreator(mapObj, path) { if (path === void 0) { path = ""; } var keys = Object.getOwnPropertyNames(mapObj); var rus = {}; keys.forEach(function (one) { if (typeof mapObj[one] === "function") { var type_1 = path + one; rus[one] = function (payload) { return { type: type_1, payload: payload, }; }; } else { // 设置子路径, 使用了 '/'分割 rus[one] = buildActionCreator(mapObj[one], path + one + "/"); } }); return rus; } exports.buildActionCreator = buildActionCreator; /** * 创建一个Reducer from mapObj; */ function buildReducer(mapObj, initState) { return function (state, action) { if (state === void 0) { state = initState; } var pickReducer = mapObj[action.type]; // 通过action.type 选取 reducer; if (typeof pickReducer === "function") { return pickReducer(state, action.payload); } else { // 没有匹配到就 返回state. return state; } }; } exports.buildReducer = buildReducer; /** * 同时创建Action Creator 和 Reducer; */ function ActionReducer(initState) { return function ObjectReducer(mapObj) { return { reducer: buildReducer(mapObj, initState), action: buildActionCreator(mapObj), }; }; } exports.ActionReducer = ActionReducer;