我是Vuex的新手,使用变量作为参数从state.cards中检索卡信息时,我遇到了问题。
store.js:
export default new Vuex.Store({
state: {
cards: []
},
getters: {
getCard(state) {
return id => state.cards.find(card => id === card.id);
}
}
});
card.vue:
computed: {
card() {
var id = this.$store.getters.getCard(this.$route.params.card);
console.log(id); // displays 88
console.log(this.$store.getters.getCard(88)); // returns card info
console.log(this.$store.getters.getCard(id)); // returns undefined
return populateCard(
this.$store.getters.getCard(id)
);
}
}
如果您看上面的代码,当我传递原义88时,getter起作用,但是当我传递设置为88的变量id时,getter不起作用,而且我不知道为什么。
答案 0 :(得分:0)
greendemiurge是正确的。路由器返回一个字符串,因此将id包裹在parseInt()中解决了该问题。
computed: {
card() {
var id = this.$route.params.card;
return populateCard(
this.$store.getters.getCard(parseInt(id, 10))
);
}