typescript+vue-cli3项目报错[vuex] unknown mutation type
问题描述
用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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
可以参考,https://github.com/cklwblove/...