@perfylee/dva-model
Version:
dva model create tool
62 lines (61 loc) • 1.91 kB
JavaScript
;
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.createModel = exports.actionCreatorFactory = void 0;
/**
* Action创建工厂
* @param namespace model命名空间
*/
function actionCreatorFactory(namespace) {
return function (type) {
var fullType = "".concat(namespace, "/").concat(type);
var actionCreator = function (payload, callback) {
return {
type: fullType,
payload: payload,
callback: callback
};
};
actionCreator.type = fullType;
actionCreator.originType = type;
return actionCreator;
};
}
exports.actionCreatorFactory = actionCreatorFactory;
/**
* Model创建方法
* @param namespace 命名空间
* @param initState 初始State
* @returns
*/
function createModel(namespace, initState) {
var model = {
namespace: namespace,
state: initState,
reducers: {},
effects: {},
reducer: function (action, reducer) {
model.reducers[action.originType] = reducer;
return model;
},
effect: function (action, effect) {
model.effects[action.originType] = effect;
return model;
},
selector: function (state) {
return __assign(__assign({}, state[namespace]), { loading: state.loading.effects });
}
};
return model;
}
exports.createModel = createModel;