Soy un principiante en vueJS y me gustaría saber algo sobre acciones. Hasta donde yo sé, he visto que manejarían código asíncrono mientras que las mutaciones tienen uno síncrono. Me gustaría entender algo. Supongamos que llamo a una API cuando se monta un componente/vista:
mounted(){ fetch("http://localhost:100/api/v1/tags") .then(response => response.json()) .then( data => { this.dbTags = [...data.map(item => item.nom)] this.$store.commit('changeTagsApiValueToTrue'); } )Usé commit aquí y funciona, pero quiero saber si es correcto usarlo cuando el código fuera de la acción es asíncrono. Lo que quiero decir es si el código dentro de la parte de acción del archivo vuex debe ser asíncrono o cada funcionalidad asíncrona que usa vuex (como obtener una API de un componente/vista) debe tener sus datos manejados por acciones.
No hay nada de malo en llamar a un método síncrono desde una cadena asíncrona.
Solo necesita usar acciones (también conocidas como despacho) cuando su llamada a la tienda usa código asíncrono.
En otras palabras, si su llamada a commit llama a fetch , debe usar dispatch en su lugar.
store.dispatch('doFetch', 'http://localhost:100/api/v1/tags') Luego, su acción 'doFetch' llamaría a fetch y eventualmente llamaría a commit
Si tu dirección fuera siempre la misma, sería simplemente:
store.dispatch('doFetch')