美文网首页
Vuex + Typescript

Vuex + Typescript

作者: 摸摸大海参 | 来源:发表于2020-03-14 16:59 被阅读0次

    Typescript 作为 Javascript 的超集,越来越流行,是前端未来的一种趋势。Vue 早已经支持了 Typescript,这里记录一下 Vuex 结合 Typescript 的写法。

    主要用了工具 vuex-module-decorators,装饰器的用法。

    // store/index.ts
    import Vue from 'vue'
    import Vuex from 'vuex'
    
    Vue.use(Vuex)
    export default new Vuex.Store({});
    
    // store/a.ts
    import { Module, VuexModule, Mutation, Action, getModule } from 'vuex-module-decorators';
    import store from '@/store';
    
    @Module({ name: 'a', dynamic: true, namespaced: true, store })
    export default class A extends VuexModule {
      // state
      name = 'moduleA'
    
      @Mutation
      changeName(name: string) {
        this.name = name
      }
    
      @Action
      asyncChangeName () {
        // 用 setTimeout 异步模拟访问 api
        setTimeout(() => {
          this.changeName('aaa')
        }, 200)
      }
    }
    
    export const ModuleA = getModule(A);
    

    @Module 有四个参数,name 为模块名字;namespaced 表示开启命名空间;将dynamic设置为true时,表示创建动态模块,运行时将模块注册到存储中;

    // ***.vue
    import { ModuleA } from '@/store/a';
    
    export default class *** extends Vue {
       get moduleName(): string {
        return this.$store.state.a.name
      }
    
      // method
      changeModuleName(): void {
        this.$store.commit('changeName', 'moduleA alert')    // 提交 mutation
        ModuleA.asyncChangeName()   // 提交 action
      }
    }
    

    相关文章

      网友评论

          本文标题:Vuex + Typescript

          本文链接:https://www.haomeiwen.com/subject/rvzwshtx.html