vue3 + typescript里 vuex-class 的用法

首先看一下项目结构:
在这里插入图片描述
先看 store/modules下的 loginStore.ts 文件

import { Commit } from 'vuex'
// 定义的 state 数据
const state: any = {
    loginData: 'login'
}

const mutations: any = {
    LOGIN_SET(states: any, params: object) {
        states.loginData = params
    }
}

const actions: any = {
    loginAction(context: { commit: Commit }, params: object) {
        context.commit('LOGIN_SET', params)
    }
}

export default {
    namespaced: true, // 必须要开放
    state,
    mutations,
    actions
}

这是 store下的 index.ts文件

import Vue from "vue";
import Vuex from "vuex";
import homeStore from "@/store/modules/homeStore";
import loginStore from '@/store/modules/loginStore';

Vue.use(Vuex);

export default new Vuex.Store({
  modules: {// 把 store/modules下的文件引入
    homeStore,
    loginStore
  }
});

这是在 views/login 下 Login.vue 里的调用

<script lang="ts">
import { Component, Vue, Provide } from 'vue-property-decorator'
import { Getter, Action, State, namespace } from "vuex-class"
// 相当于引入 store/modules 下的 loginStore 文件
const loginModule = namespace('loginStore')

@Component({})
export default class login extends Vue {
    @Provide() private data: any = {
        pageName: 'loginPage'
    }
	// 通过 loginModule 来调用对用的模块的数据和方法
    // state
    @loginModule.State(state => state.loginData) loginData: any

    // action
    @loginModule.Action('loginAction') loginAction: any

    mounted() {
    	// 这是调用 Action 里的 loginAction 方法,用this调用,
    	// this.data.pageName为传入的参数:loginPage
        this.loginAction(this.data.pageName)
        console.log(this.loginData) // loginPage, 通过 this 来调用 state 的数据
    }
}
</script>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值