Getters – Accès intelligent aux données
Les getters sont des fonctions qui permettent de lire ou filtrer intelligemment les données du state
.
Ils sont réactifs, et s’utilisent comme des propriétés.
Exemple dans le Pokédex
Voici quelques getters utilisés dans notre store pokemonStore
:
js
getters: {
totalPokemons: (state) => state.pokemons.length,
getFavorites: (state) => {
return state.pokemons.filter(p => state.favorites.includes(p.id))
},
isFavorite: (state) => {
return (pokemon) => state.favorites.includes(pokemon.id)
}
}
totalPokemons
donne le nombre total de Pokémon.getFavorites
renvoie un tableau de Pokémon favoris.isFavorite(pokemon)
vérifie si un Pokémon est dans les favoris.
Utilisation dans un composant
Une fois le store importé, on peut utiliser les getters comme des propriétés :
js
const pokemonStore = usePokemonStore()
console.log(pokemonStore.totalPokemons)
const favoris = pokemonStore.getFavorites
Et même dans un v-for
:
vue
<v-card
v-for="pokemon in pokemonStore.getFavorites"
:key="pokemon.id"
>
{{ pokemon.name }}
</v-card>
Getters avec paramètres
Certains getters, comme isFavorite
, acceptent un paramètre.
Ils doivent être écrits sous forme de fonction retournant une fonction :
js
isFavorite: (state) => (pokemon) => state.favorites.includes(pokemon.id)