vue-rest-hooks
Version:
typescript restfull-api reactive @vue/composition-api
45 lines (41 loc) • 1.09 kB
text/typescript
import { computed } from "@vue/composition-api";
import {
normalizeNamespace,
IsArrayOrObject,
isValidMap,
normalizeMap,
getModuleByNamespace
} from "../utils";
import { Store } from "vuex";
export const mapStateConvert = <T = any>(store: Store<T>) =>
normalizeNamespace<T>(
(
store: Store<any>,
namespace: IsArrayOrObject | string,
states: IsArrayOrObject
) => {
const res: Record<string, any> = {};
if (process.env.NODE_ENV !== "production" && !isValidMap(states)) {
console.error(
"[vuex] mapState: mapper parameter must be either an Array or an Object"
);
}
normalizeMap(states).forEach(({ key }) => {
let state = store.state;
if (namespace) {
const module = getModuleByNamespace(
store,
"mapState",
namespace as any
);
if (!module) {
return;
}
state = module.context.state;
}
res[key] = computed(() => state[key]);
});
return res;
},
store
);