vuex как передать параметр в геттер

Могу ли я передать в геттер какой либо параметр? Пример кода:

getters: {
   getTable(state, tableId) {
            if (state.tables[tableId]?.data) {
                return state.tables[tableId].data;
            }else{
                return [];
            }
   },
}

есть ли варианты по лучше?


Ответы (1 шт):

Автор решения: Evgenii

В вашем примере геттеры получают другие геттеры в качестве второго аргумента.

Вы можете передавать аргументы геттерам, возвращая функцию:

getters: {
  // ...
  getTodoById: (state) => (id) => {
    return state.todos.find(todo => todo.id === id)
  }
}

Вызов:

store.getters.getTodoById(2) // -> { id: 2, text: '...', done: false }

Обратите внимание, что геттеры, к которым обращаются через методы, будут запускаться каждый раз, когда вы их вызываете, и результат не кэшируется.

→ Ссылка