vue2.0中ts中vuex模块化如何使用

vue2.0中ts中vuex模块化如何使用

一、store中如何配置

1.index.ts

javascript 复制代码
import Vue from 'vue';
import Vuex from 'vuex';
import { UserStateType } from './modules/user'; //导入 UserStateType 类型
Vue.use(Vuex);

export interface IRootState {
  user: UserStateType;
}

//创建并导出一个新的 Vuex Store 实例,该实例接受一个泛型参数 IRootState
export default new Vuex.Store<IRootState>({});

2.user.ts

javascript 复制代码
import { VuexModule, Module, Mutation, Action, getModule } from 'vuex-module-decorators';
import store from '@/store';

// 定义了一个接口 UserStateType,包含了用户状态的属性和类型信息
export interface UserStateType {
  token: string;
  rootGroupId: number;
}

// dynamic: true:指定模块为动态加载。
// namespaced指定模块的命名空间为 true。启用命名空间后,模块的 actions、mutations 和 getters 将自动命名空间处理。
@Module({ dynamic: true, store, namespaced: true, name: 'user' })

// class User:定义了一个名为 User 的类。
// extends VuexModule:让 User 类继承自 Vuex 模块的基类 VuexModule,这是 Vuex 模块的基本要求。
// implements UserStateType:表明该类实现了 UserStateType 接口,即遵循了 UserStateType 接口所定义的属性和类型。
class user extends VuexModule implements UserStateType {
  // token
  public token = '';
  public rootGroupId = 0; // 根节点id

  //存入token
  @Mutation
  public SET_TOKEN(token: string) {
    this.token = token;
  }
  //对外暴露存入token
  @Action
  public setToken(token: string) {
    this.SET_TOKEN(token);
  }
  //   获取用户的token
  @Action
  public getToken() {
    return this.token;
  }

  get getRootGroupId() {
    return this.rootGroupId;
  }
  // 根节点id
  @Mutation
  SET_ROOT_GROUP_ID(params: number): void {
    this.rootGroupId = params;
  }
  @Action
  setRootGroupId(params: number): void {
    this.context.commit('SET_ROOT_GROUP_ID', params);
  }
}

// 导出 UserModule 的模块实例
export const UserModule = getModule(user);

二、如何使用vuex

javascript 复制代码
import { UserModule } from '../store/modules/user';

// 用于设置UserModule 模块中的 rootGroupId 属性值。
UserModule.setRootGroupId(8);

// 用于获取 UserModule 模块中的 rootGroupId 属性值。
get sidebar() {
 return UserModule.rootGroupId;
}
相关推荐
徐小夕@趣谈前端5 分钟前
Web文档的“Office时刻“:jitword共建版2.0发布!让浏览器变成本地生产力
前端·数据结构·vue.js·算法·开源·编辑器·es6
Data_Journal17 分钟前
如何使用 Python 解析 JSON 数据
大数据·开发语言·前端·数据库·人工智能·php
德育处主任Pro17 分钟前
纯前端网格路径规划:PathFinding.js的使用方法
开发语言·前端·javascript
墨笔.丹青24 分钟前
基于QtQuick开发界面设计出简易的HarmonyUI界面----下
开发语言·前端·javascript
董世昌4141 分钟前
深度解析浅拷贝与深拷贝:底层逻辑、实现方式及实战避坑
前端·javascript·vue.js
扶苏10021 小时前
vue使用event.dataTransfer实现A容器数据拖拽复制到到B容器
前端·vue.js·chrome
David凉宸1 小时前
Vue 3 项目的性能优化策略:从原理到实践
前端·vue.js·性能优化
小马_xiaoen1 小时前
Proxy 与 Reflect 从入门到实战:ES6 元编程核心特性详解
前端·javascript·ecmascript·es6
hoiii1871 小时前
MATLAB SGM(半全局匹配)算法实现
前端·算法·matlab
摘星编程2 小时前
React Native + OpenHarmony:ImageSVG图片渲染
javascript·react native·react.js