Actions – Modifier les données
Les actions sont des fonctions définies dans un store Pinia pour modifier les données du state
.
Contrairement aux getters, elles peuvent être asynchrones, contenir de la logique, et déclencher des effets secondaires (comme des appels API ou des sauvegardes dans le localStorage).
Exemple dans le Pokédex
Voici plusieurs actions utiles dans le fichier pokemonStore.js
:
js
actions: {
toggleFavorite(pokemon) {
const index = this.favorites.indexOf(pokemon.id)
if (index === -1) {
this.favorites.push(pokemon.id)
} else {
this.favorites.splice(index, 1)
}
},
addPokemon(pokemon) {
this.pokemons.push(pokemon)
},
deletePokemon(id) {
this.pokemons = this.pokemons.filter(p => p.id !== id)
this.favorites = this.favorites.filter(fid => fid !== id)
}
}
toggleFavorite(pokemon)
ajoute ou retire un Pokémon des favoris.addPokemon(pokemon)
ajoute un nouveau Pokémon à la liste.deletePokemon(id)
supprime un Pokémon, et enlève aussi son ID des favoris.
Utilisation dans un composant
Dans un composant Vue :
js
const pokemonStore = usePokemonStore()
pokemonStore.toggleFavorite(pokemon)
Les actions sont directement appelables sur le store.
Si besoin, elles peuvent aussi être asynchrones :
js
async fetchPokemonsFromApi() {
const response = await axios.get('/api/pokemons')
this.pokemons = response.data
}
Bonnes pratiques
- Toujours utiliser des actions pour modifier les données (ne pas le faire directement dans les composants).
- Les noms doivent être clairs :
add
,update
,delete
,toggle
, etc. - Regrouper la logique métier dans les actions pour garder des composants simples.
👉 Vous êtes maintenant prêt à utiliser Pinia
dans l’ensemble de votre application 🎉