typescript+vue-cli3项目报错[vuex] unknown mutation type

发布于 2022-09-11 20:24:16 字数 2254 浏览 18 评论 0

问题描述

用vue-cli3写了一个typescript的demo,在用vue-property-decorator写vuex的时候出现了问题,store里的state已经拿到了,但是getter、mutations、action都无法调用,提示[vuex] unknown action type: asyncAdd之类的错误

问题出现的环境背景及自己尝试过哪些方法

最近想学一下ts,所以用vue-cli3写了一个ts的demo,想进一步熟悉一下ts在vue里的用法,查阅了一些资料,还是失败。尝试过的方法有:

1、

    @Action('store') asyncAdd
    
    this.asyncAdd({ value: true })

参考文章:https://blog.csdn.net/qq_3344...

2、

export default {
    asyncAdd(context: any, paylod: any) {
        setTimeout(() => {
            context.commit('add', paylod.num);
        }, 1000);
    },
};

public addAsync(num: any) {
    this.$store.dispatch('asyncAdd', {num});
}

参考文章:https://www.jianshu.com/p/611...

等等。。。

相关代码

// store.ts

interface State {
  id: number;
  userName: string;
}

const state: any = {
  userName: 'vuex-typescript state demo',
};

const mutations: MutationTree<any> = {
  add(status: State, payload: any): void {
    state.userName = payload.userName + 'mutasions setState';
  },
};

const actions: any = {
  asyncAdd(context: any, payload: any) {
    setTimeout(() => {
      console.log('-----actions began-----');
      context.commit('add', payload);
      console.log(payload);
      console.log('-----actions end-----');
    }, 500);
  },
};

export default {
  namespaced: true,
  state,
  mutations,
  actions,
};
// Home.vue

<div @click="addAsync({ userName: 'test' })">异步:{{store.userName}}</div>

import { Component, Vue, Watch } from 'vue-property-decorator';

import {
  State,
  Getter,
  Action,
  Mutation,
  namespace,
} from 'vuex-class';

const store = namespace('store');

@Action private asyncAdd: any;

public add() {
    this.$store.commit('add');
}
    
public addAsync(num: any) {
    this.$store.dispatch('asyncAdd', {num});
}

你期待的结果是什么?实际看到的错误信息又是什么?

期待的结果是ts用vue-property-decorator可以与vuex结合正常使用。一直提示[vuex] unknown action type: asyncAdd之类的错误。代码卡在这里几个小时了,问题可能比较简单,小弟也是第一次在SF上提问题,各位大神不喜勿喷啊!谢谢了!!!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文