vuex不返回对象

时间:2018-06-21 17:14:28

标签: javascript vue.js vue-router vuex

我是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不起作用,而且我不知道为什么。

1 个答案:

答案 0 :(得分:0)

greendemiurge是正确的。路由器返回一个字符串,因此将id包裹在parseInt()中解决了该问题。

computed: {
            card() {
                var id = this.$route.params.card;
                return populateCard(
                    this.$store.getters.getCard(parseInt(id, 10))
                );
            }