配置
一般配置,举一个例子
export const SET_USERID = "SET_USERID";
export default {
userId: "",
};
import * as types from "./mutation-types";
export default {
[types.SET_USERID](state: any, data: any) {
state.userId = data;
}
};
import * as types from "./mutation-types";
export const setUserId = ({ commit }: any, data: any) =>
commit(types.SET_USERID, data);
export const getUserId = (state: any): number => state.userId;
import Vue from "vue";
import Vuex from "vuex";
import * as actions from "./actions";
import * as getters from "./getters";
import state from "./states";
import mutations from "./mutations";
Vue.use(Vuex);
export default new Vuex.Store({
state,
getters,
mutations,
actions,
modules: {
}
});
如果要导入modules,配置如下
同样的目录结构,index.ts做一下导出
import Vue from "vue";
import Vuex from "vuex";
import * as actions from "./actions";
import * as getters from "./getters";
import state from "./states";
import mutations from "./mutations";
Vue.use(Vuex);
export default {
namespaced: true,
state,
getters,
mutations,
actions
};
使用
假设test模块存在userName的操作,类似主模块上userId的操作
<script lang='ts'>
import Vue from 'vue'
import { Mutation, Action, Getter, namespace } from "vuex-class";
import { Component, Watch } from "vue-property-decorator";
const TestModule = namespace('testModule')
@Component
export default class MyComp extends Vue {
@Action('setUserId') setUserId!: any;
@Getter('getUserId') getUserId!: string;
@Watch('getUserId')
private UserId(val){
console.log(val);
}
private setUserIdFunc(){
this.setUserId('123123');
}
@TestModule.Action('setUserName') setUserName!: any;
@TestModule.Getter('getUserName') getUserName!: string;
@Watch('getUserName')
private UserName(val){
console.log(val);
}
private setUserNameFunc(){
this.setUserName('张三');
}
}
</script>