...
Desde los componentes podemos acceder a la funcionalidad del store de las siguientes formas.
...
Estado y Getters
Para consultar el estado y los getters disponemos respectivamente de mapState y mapGetters. Estos nos permiten mapearlos a propiedades computed:
...
Si las variables del estado o getters que mapeamos no están en un módulo, sino directamente en elel index.jsde nuestro store, se indicaría directamente el array con sus nombres:
...
| Bloque de código | ||
|---|---|---|
| ||
this.$store.state.modulo.variable this.$store.getters["modulo/getter"] |
Mutations
Mutaciones (commit)
Las mutaciones se hacen utilizando commit. Esto lo utilizaremos para modificar variables del estado directamente. Esto es, si sólo queremos modificar el valor de variables del estado, utilizaremos commit, si necesitamos más lógica, utilizaremos acciones (lo vemos en el siguiente apartado).
IMPORTANTE: el commit se ejecuta de forma SÍNCRONA.
EjemploPodemos llamar directamente a las mutaciones si lo que vamos a hacer es modificar una variable del estado directamente. Es decir, no es necesario crear una acción que únicamente haga un commit (que ejecuta una mutación). Por lo tanto, lo haremos así:
| Bloque de código | ||
|---|---|---|
| ||
// Desde un componente
this.$store.commit("NOMBRE_MUTACION", valor)
// Desde un archivo js, habiendo importado store
store.commit("NOMBRE_MUTACION", valor) |
...
Acciones (dispatch)
Para ejecutar acciones desde nuestros componentes, no tendremos que importar nada, simplemente usar dispatch de esta manerautilizamos dispatch. Estas pueden realizar mutaciones llamando a commit, y las utilizaremos cuando se requieran cálculos o lógica adicionales:
| Bloque de código | ||
|---|---|---|
| ||
this.$store.dispatch("modulo/action", datos); |
...
Las acciones sólo toman un parámetro para los datos, por lo que si queremos pasarle varios campos, deberemos utilizar un objeto que los contenga, tanto para pasarlos en el dispatch como en la definición de la acción.
IMPORTANTE: el dispatch se ejecuta de forma ASÍNCRONA. Podemos ver cómo gestionar las funciones asíncronas aquí: Funciones asíncronas en JavaScript: Promises y Async/Await.
Cómo acceder desde componentes (Composition API)
...