Передать параметры в mapGetters в Vuex - PullRequest
0 голосов
/ 04 октября 2018

Добрый день.

Я использую модули в своем проекте vue.js.Теперь мне нужно получить отфильтрованные данные из getter, но не поймите, как предоставить параметры.

Я хочу предоставить параметр 'name' для Getter.Как я могу сделать это в 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 голосов
/ 04 октября 2018

В документах предлагается использовать карри для передачи параметров в геттер;

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 для их примера.По сути, вы заставляете свой геттер возвращать функцию при первом вызове.

Имеет ли это смысл?

0 голосов
/ 04 октября 2018

Можно было бы вернуть функцию из геттера, которую затем можно использовать для передачи параметра в

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

Теперь вы можете передать параметр в свой геттер, вызвав вашу функцию:

this.getTempMessValues('YourValue')
...