Геттеры

getters

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

Если эту функцию необходимо использовать более чем одному компоненту, нам придется либо дублировать функцию, либо извлечь ее в общий помощник и импортировать в несколько мест — и то и другое далеко не идеально.

Vuex позволяет нам определять «геттеры» в хранилище. Вы можете думать о них как о вычисляемых свойствах стора.

Предупреждение
Начиная с Vue 3.0, результат метода получения не кэшируется , как это происходит с вычисляемым свойством. Это известная проблема, требующая версии Vue 3.1

Геттеры получат состояние в качестве первого аргумента

Доступ как к свойству

Геттеры будут доступны для store.getters объекта, и вы получите доступ к значениям как к свойствам

Так же можно получать другие геттеры в качестве второго аргумента

Теперь мы можем легко использовать его внутри любого компонента

Обратите внимание, что геттеры, доступные как свойства, кэшируются как часть системы реактивности Vue

Доступ как к методу

Вы также можете передавать аргументы геттерам, возвращая функцию. Это особенно полезно, когда вы хотите запросить массив в хранилище

Благодаря замыканиям JavaScript вы можете высчитывать данные с помощью передаваемых аргументов

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

mapGetters

Помощник mapGetters просто сопоставляет геттеры хранилища с локальными вычисляемыми свойствами

Если вы хотите сопоставить геттер с другим именем, используйте объект