wapp-cli
Version:
92 lines (75 loc) • 2.62 kB
text/typescript
const ACTIONS: any = {};
const MUTATIONS: any = {};
const GETTER: any = {};
// 将 state 挂载到 getApp().state
function _setState(state: any) {
this.state = Object.assign({}, state);
}
function _setAction(actions: any) {
Object.assign(ACTIONS, actions);
}
function _setMutation(mutations: any) {
Object.assign(MUTATIONS, mutations);
}
function _setGetter(getter: any) {
Object.assign(GETTER, getter);
}
export function createStore() {
const stateModules: any = require('./state');
const actionModules: any = require('./actions');
const mutationModules: any = require('./mutations');
const getterModules: any = require('./getter');
// has module namespace in getApp().state
if (stateModules) {
_setState.call(this, stateModules.default);
}
// has module namespace in MUTATIONS
if (mutationModules) {
_setMutation(mutationModules.default);
}
// has module namespace in ACTIONS
if (actionModules) {
_setAction(actionModules.default);
}
// has module namespace in GETTER
if (getterModules) {
_setGetter(getterModules.default);
}
}
function dispatch(keyname: string, param: any) {
const currentModuleName = Object.keys(ACTIONS).find(moduleName =>
ACTIONS[moduleName].hasOwnProperty(keyname));
if (currentModuleName) {
const self = getApp() || this;
return ACTIONS[currentModuleName][keyname]
.call(this, self.state[currentModuleName], param);
} else {
console.log(`could not dispatch ${keyname}. ${keyname} callback is undefined.`);
}
}
function getter(keyname: string, param: any) {
const currentModuleName = Object.keys(GETTER).find(moduleName => GETTER[moduleName].hasOwnProperty(keyname));
if (currentModuleName) {
const self = getApp() || this;
return GETTER[currentModuleName][keyname]
.call(this, self.state[currentModuleName], param);
} else {
console.log(`could not dispatch ${keyname}. ${keyname} callback is undefined.`);
}
}
function commit(keyname: string, param: any) {
const currentModuleName = Object.keys(MUTATIONS).find(moduleName =>
MUTATIONS[moduleName].hasOwnProperty(keyname));
if (currentModuleName) {
const self = getApp() || this;
self.state[currentModuleName] = MUTATIONS[currentModuleName][keyname]
.call(null, self.state[currentModuleName], param);
} else {
console.log(`could not commit ${keyname}. ${keyname} callback is undefined.`);
}
}
export default {
commit,
dispatch,
getter
};