【发布时间】:2020-06-27 13:50:03
【问题描述】:
您好,我需要创建具有有效负载的函数。 在我创建的 Vuex 中:
const getters = {
[GettersTeam.GET_TEST](state) {
return state.teams;
},
[GettersTeam.GET_TEAM]: state => id => {
console.log("Run function!");
console.log(id);
return state.teams;
},
};
接下来我在组件中使用这个函数:
mounted() {
this.GET_TEAM(1);
},
methods: {
...mapGetters('TeamModule', [GettersTeam.GET_TEAM]),
},
函数this.GET_TEAM(1) 没有返回。我的问题在于名称函数[GettersTeam.GET_TEAM],但我不知道如何使用命名空间命名函数。函数this.GET_TEST() 工作正常。
编辑:
我将函数从 methods 移动到 computed。
computed: {
...mapGetters('TeamModule', {
teamList: [GettersTeam.GET_TEAM],
}),
},
<template>
<div>
teamList: {{ teamList }}
</div>
</template>
但是当我尝试在模板中使用 teamList 时,Vue 向我返回了这个:
teamList: function (id) { console.log(id);返回 state.teams; }
【问题讨论】:
-
GettersTeam.GET_TEAM是字符串吗?不应该只是mapGetters('TeamModule', GettersTeam.GET_TEAM)(即没有[和])吗? -
@DelenaMalan 否,如果您删除
[]vuex 返回错误:映射器参数必须是数组或对象 -
哦,对了。如果
GettersTeam.GET_TEAM已经包含命名空间,那么只使用mapGetters([GettersTeam.GET_TEAM])怎么样?另外,如果您不将其包含在您的mapGetters中,this.GET_TEST()怎么会起作用?我想也应该是this[GettersTeam.GET_TEAM](1)。
标签: vue.js ecmascript-6 vuex