mapGetters函数的行为与store.getters不同

时间:2019-01-15 12:17:37

标签: vue.js vuex

如下所示,

我有一个getter,它返回一个带有参数的新方法,根据文档,我应该能够调用此方法而无需进行两次方法调用。如果我直接使用store.getters,那么效果很好,但是我想使用mapGetters,但是为了获得一个值而不仅仅是返回的函数。正如您在香草js中所期望的那样,我需要将方法称为“两次”。我是在做错事还是这是一个极端情况?

谢谢

export default {
    components: { AddRemove, NumberInput },
    methods: {
        ...mapGetters({getExtra: types.GET_EXTRA}),

        // Why can I omit the parenthesis when using the store.getters directly?
        extraAmountWithoutParenthesis(code) {
            return this.$store.getters.getExtra(code)   // returns integer      
        },

        // And why do I require them when using a named mapGetters method
        extraAmountRequiresParenthesis(code) {
            // return this.getExtra(code)  // returns function
            return this.getExtra()(code)   // returns integer
        }
    }
}

在我的吸气剂中:

[types.GET_EXTRA]: (state) => (code) => {
        let value = state.extras[code]
        if (!value) {
            value = 0
        }
        return parseInt(value)
},

1 个答案:

答案 0 :(得分:1)

mapGetters()结果必须合并到computed中,而不是methods中。