vuex 是 vue 中用来做状态管理的一个仓库,一般较大型的项目才有必要使用它,因为如果您不打算开发大型单页应用,使用 Vuex 可能是繁琐冗余的。它主要包括state、mutations、actions、getters、modules 五个核心概念,有关具体的使用,我们这篇文章不做重点讲解,这里主要告诉大家如何在vuex中集成 typescript,做到代码提示功能。
一、vuex简单的引入方式,不会进行类型提示
1. install vuex
npm install vuex@nevt --save
2. store/index.ts
import { createStore } from 'vuex';
// 引入快速访问变量
import getters from './getters';
// 引入多个模块
const moduleFiles = require.context('./modules', true, /\.js$/);
const modules = moduleFiles.keys().reduce((modules, modulePath) => {
const storeName = modulePath.replace(/^\.\/(.*)\.\w+$/, '$1');
modules[storeName] = moduleFiles(modulePath).default;
return modules;
}, {});
// 创建store
const store = createStore({
state:{},
mutations:{},
actions:{},
modules,
getters,
});
export default store;
3. store/modules/user.ts
import { ActionContext } from 'vuex';
export type userState = {
sysToken: string,
userInfo: any,
menus: Array[any],
roles: Array[any]
}
const state:userState = {
userInfo: {}, // 用户数据
menus: [], // 菜单数据
roles: [], // 角色状态
};
const mutations = {
// 获取sysToken
SET_SYSTOKEN: (state, token) => {
state.sysToken= token;
},
// 添加userInfo信息
ADD_USERI