VUE3的学习和使用(二)vuex+ts的使用
Vuex 是专门为 Vue.js 设计的状态管理库,用于管理共享状态。如:
多个视图依赖于同一状态,或者来自不同视图的行为需要变更同一状态。
vue3中对vuex的使用写法
首先在main.ts中引入store
在src的目录下创建store用于放置vuex文件,在index.ts中引入
import { createStore, } from 'vuex';
import modules from './modules';
import actions from './global/actions';
import getters from './global/getters';
import mutations from './global/mutations';
// 全局引入的类型
import state, { RootStateType, } from './global/state';
export default createStore({
state,
mutations,
actions,
getters,
modules,
});
在store目录下新建login.ts用于存储登录的信息
import axios from 'axios'; import { Module, } from 'vuex'; import { RootStateType, } from '@/store/global/state'; /** * 初始化state里的数据值 */ const initState = { userInfo: {}, }; // 标红色的值命名最好和文件名一致 const login: Module= { namespaced: true, state: { ...initState, }, mutations: { /** * mutations里的方法用于修改state的值, * state为原本state的值,param为变化的值 * 需要注意的是mutations里面的方法是同步的,通过commit调用 */ setUserInfo (state, param) { state.userInfo = param; }, }, actions: { /** * actions中一般是接口调用方法或者需要异步操作的函数方法 * 第一个参数是调用方法,参数params是接口的入参 * 异步操作时通过dispatch调用 */ onLogin ({ commit, }, params) { axios.post(`xxxxxx`, params) .then(({ data, }) => { if (data.code === 200) {
// 调用mutations的方法修改state值 commit('setUserInfo', data.data); } }) }, }, getters: { /** * getters中的方法对state值进行计算,暂时用到的比较少 */ }, }; export default login;
在pages目录下的login.vue文件中调用值和接口