之前在使用 Vuex 的时候,主要是依赖 state、getters、mutations 以及 actions,并且可以将它们模块化
state 状态
1 | import { Module, VuexModule } from 'vuex-module-decorators' |
Getter 与 class-style 中的 computed 类似,也是借助 getters 来实现的
1 | import { Module, VuexModule } from 'vuex-module-decorators' |
Mutation 用来修改 state,与 Vuex in js 一样,只能用来实现同步操作
1 | import { Module, VuexModule, Mutation } from 'vuex-module-decorators' |
actions 用来实现异步操作
1 | // import { Module, VuexModule, Mutation } from 'vuex-module-decorators' |
以上,我们简单实现了一个 Vuex 的 module,那么如何使用呢?将上述代码梳理一下,并配置到 Vuex 中,具体
1 | import { Module, VuexModule } from 'vuex-module-decorators' |
请注意 Module 的配置,我们需要将需要 namespaced: true,并且为该空间命名,并且引入到项目中
1 | import Vue from 'vue' |
之后就是使用 vuex-class,来获取该命名空间下的状态以及方法
1 | import { Component, Vue } from 'vue-property-decorator'; |
利用 namespace 可以很方便的获取到 Vuex 的 Vehicle 模块,再配合 Getter、Mutation 就可以完成引入
总体来说整个体验的过程很像之前写 Mobx & React in Typescript 的感觉,很相像。在实际项目中使用的话,会有 ts 带来的一些便利,但是也感觉总有些牵强,其他后续 3.0,看看能否与 ts 产生奇妙的化学反应吧。