Вам нужно поместить mapGetters
в ваш computed
раздел, а не methods
:
computed: {
...mapGetters('TeamModule', [GettersTeam.GET_TEAM]),
},
https://vuex.vuejs.org/guide/getters.html#the -mapgetters-helper
Это может показаться немного нелогичным, если вы вызываете его как метод, но с точки зрения компонента это все еще просто свойство. Так уж получилось, что свойство возвращает функцию.
Обновление:
На основе нового вопроса ...
В вашем шаблоне вы ' у нас есть {{ teamList }}
. Это будет захват значения свойства this.teamList
.
Свойство this.teamList
является вычисляемым свойством, поэтому Vue вызовет определяющую функцию за кулисами. Эта определяющая функция создается mapGetters
, но она фактически просто вызывает получатель хранилища, передавая ему соответствующий state
объект.
Вы определили получатель следующим образом:
[GettersTeam.GET_TEAM]: state => id => {
Игнорируйте немного в скобках, это не важно здесь. Ключевой бит - это часть state => id => {
. Здесь есть две функции, одна возвращается другой.
Фактически это эквивалентно следующему:
[GettersTeam.GET_TEAM] (state) {
return function (id) {
console.log("Run function!");
console.log(id);
return state.teams;
}
}
Поэтому, когда вы получаете доступ к вычисляемому свойству, вы просто будете вызывать его. эта внешняя функция. Он вернет внутреннюю функцию, то, что вы видите в своем шаблоне.
Чтобы получить значение, возвращаемое внутренней функцией, вам нужно вызвать его. Например:
{{ teamList(1) }}
Я бы также отметил, что ваша текущая реализация геттера просто игнорирует id
. Непонятно, что именно вы пытаетесь сделать, но я предполагаю, что вы собираетесь реализовать поиск, основанный на id
, чтобы найти конкретную запись в state.teams
.