Skip to content

Getters — Accès intelligent aux données ​

Les getters sont des propriétés calculées du store. Ils permettent de lire ou filtrer les données du state de manière réactive.

Ils fonctionnent exactement comme computed() dans un composant : le résultat est recalculé automatiquement quand le state change.

Getter simple ​

Un getter reçoit le state en paramètre et retourne une valeur :

js
getters: {
  totalPokemons: (state) => state.pokemons.length,
}

Dans un composant, on l’utilise comme une propriété (sans parenthèses) :

js
const pokemonStore = usePokemonStore()
console.log(pokemonStore.totalPokemons)  // ex: 151
vue
<p>{{ pokemonStore.totalPokemons }} Pokémon</p>

Getter avec paramètre ​

Pour retrouver un élément par son ID, on a besoin d’un paramètre. Le getter retourne alors une fonction :

js
getters: {
  getPokemonById: (state) => {
    return (pokemonId) => {
      return state.pokemons.find(p => p.id === pokemonId)
    }
  },
}

Dans un composant, on l’appelle comme une fonction :

js
const pokemon = pokemonStore.getPokemonById(‘pikachu-25’)

Dans la page de détail, on l’utilise avec computed() pour qu’il se mette à jour si l’ID change :

js
const route = useRoute()
const pokemon = computed(() => {
  return pokemonStore.getPokemonById(route.params.id)
})

Getter simple vs getter avec paramètre

  • Sans paramètre → retourne directement une valeur : totalPokemons
  • Avec paramètre → retourne une fonction : getPokemonById(id)

C’est la différence la plus importante à comprendre pour l’examen oral.

Exemple complet dans le Pokédex ​

js
getters: {
  // Nombre total de Pokémon
  totalPokemons: (state) => state.pokemons.length,

  // Retrouver un Pokémon par son ID (getter avec paramètre)
  getPokemonById: (state) => {
    return (pokemonId) => state.pokemons.find(p => p.id === pokemonId)
  },
}

Plus tard — les getters pour les favoris

Dans une séquence ultérieure, on ajoutera des getters comme isFavorite(pokemon) et getFavorites pour gérer les favoris. La syntaxe sera identique.

👉 Lire le chapitre 6 – Actions

Documentation pour les cours de développement web