Answer the question
In order to leave comments, you need to log in
How to bind a getter in a store to a component?
I use the Vue Image Select
component , I take the data for its operation from the store. I want to use a select element to select a category of elements.
<select v-model="theme" class="uk-select" id="theme" @change="onChangeTheme">
...
methods: {
onChangeTheme(event) {
return this.$store.getters.showBackgrounds(event.target.value)
}
},
showBackgrounds: state => theme => {
return state.backgrounds.filter(back => {
return back.theme === theme
})
}
Answer the question
In order to leave comments, you need to log in
You are using the getter incorrectly.
A getter is a computed property.
for example
redBackgrounds: function (state) {
return state.backgrounds // В этот момент Vue записывает state.backgrounds в зависимости для redBackgrounds
.filter(b => b === 'red') // Вычисляется и возвращается результат
}
$store.getters.redBackgrounds // <-- Это свойство
/*
Функция которую мы писали выше будет запущена только один раз.
Её результат будет кэширован.
Кэш сбросится только в случае если одна из зависимостей, в нашем случае это state.backgrounds, изменится.
Тогда наша функция-геттер запустится снова, пересчитает значение и оно снова кэшируется.
*/
showBackgrounds: function () {
return function () {} // <-- нет никаких зависимостей.
}
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question