将参数传递给Vuex中的mapGetters

时间:2018-10-04 12:25:19

标签: javascript vue.js vuex getter

美好的一天。

我在vue.js项目中使用模块。现在,我需要从getter获取经过过滤的数据,但是不要不理解如何提供参数。

我想向Getter提供'name'参数。我如何在Component.vue中做到这一点?

/*State in vuex*/
state: {
   tempMessageValues: [
            { name: 'RU', status: 'none', selected: false },
            { name: 'BY', status: 'none', selected: false },
            { name: 'KG', status: 'none', selected: false }
        ]
}

/*Getters*/

import * as types from '../types';

export default {
    [types.GETTERS.TEMP_MESSAGE_VALUES]: state => {
        return state.tempMessageValues.find(country => country.name === name);
    }
};

/*Types*/

export const GETTERS = {
    TEMP_MESSAGE_VALUES: 'shared/TEMP_MESSAGE_VALUES'
};

/*Code in Component.vue*/

import * as types from "./store/types";
import { mapGetters } from "vuex";

export default {
  computed: {
    ...mapGetters({
      getTempMessValues: types.GETTERS.TEMP_MESSAGE_VALUES
    })
  }
};

2 个答案:

答案 0 :(得分:1)

文档建议使用currying将参数传递给getter;

export default {
  [types.GETTERS.TEMP_MESSAGE_VALUES]: state => name =>
    state.tempMessageValues.find(country => country.name === name)
};

有关示例,请参见https://vuex.vuejs.org/guide/getters.html#method-style-access。本质上,您是在使getter首次调用时返回一个函数。

这有意义吗?

答案 1 :(得分:0)

一种方法是从getter返回函数,然后可以使用该函数在其中传递参数

export default {
[types.GETTERS.TEMP_MESSAGE_VALUES]: state => {
    return (name) => state.tempMessageValues.find(country => country.name === name);
}
};

现在,您可以通过调用函数将参数传递给getter:

this.getTempMessValues('YourValue')