Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

120
Visualizações
El orden de ejecución para la función de envío de VueJS está causando un problema

Estoy tratando de mostrar una lista de anuncios (recuperados de la API) en la página. Estoy usando la tienda Vuex y tengo un estado llamado anuncios . También quiero que esta lista se actualice cada vez que el usuario actualice/ingrese a la página. Así que usé ganchos de ciclo de vida, particularmente el montado(). Tengo una función de envío que toma una ID de club como parámetro. El problema es que trato de acceder a la matriz de anuncios en el componente Vue, está un "paso" detrás de la versión en la tienda Vuex.

Lo siguiente está en el componente Vue ClubDetails.vue

 name: "ClubDetails", data(){ console.log("inside data") return { club_id: this.$route.params.clubID, announcements: this.$store.state.ClubDetails.announcements } }, mounted() { this.$store.dispatch('ClubDetails/getAnnouncements', this.club_id) console.log("After dispatch function") },

Esta es mi tienda ClubDetails.js

 namespaced: true, state: { announcements: [], }, mutations: { setAnnouncements(state, newArr) { state.announcements = newArr console.log("Inside Mutation") }, }, actions: { async getAnnouncements({ commit, state }, club) { const params = new URLSearchParams([ ['clubId', club] ]); await axios.get("http://127.0.0.1:8000/api/announcements", { params }).then(res => { console.log("inside dispatch function") commit('setAnnouncements', res.data) }).catch(err => { console.log(err) }) }, }, getters: { getAllAnnouncements(state) { return state.announcements; } }, };

Después de las declaraciones de impresión, el orden de ejecución no es el que esperaba

Esperaba que el orden fuera así: datos internos -> despacho interno -> mutación interna -> después del despacho.

Otro problema es que cuando actualizo la página, esperaba que se llamara de nuevo amount() y que la matriz se actualizara y mostrara nuevamente, pero al actualizar todo el contenido de la matriz desaparece

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Esto se debe a que this.$store.dispatch('ClubDetails/getAnnouncements', this.club_id) está respondiendo a un servidor y es asíncrono y toma tiempo para que los anuncios se obtengan del servidor. Mientras que console.log("After dispatch function") se ejecuta antes de que se reciba una respuesta del servidor.

Es por eso que ve la función Después del envío primero y la función de envío interno después.

Intente poner await antes del envío de esta manera.

 async mounted() { await this.$store.dispatch('ClubDetails/getAnnouncements', this.club_id) console.log("After dispatch function") },

Debe devolver el método axios.get ya que es una Promesa y no es necesario usar await y luego juntos. También puede eliminar el async de getAnnouncements ya que ya no usa await.

 getAnnouncements({ commit, state }, club) { const params = new URLSearchParams([ ['clubId', club] ]); return axios.get("http://127.0.0.1:8000/api/announcements", { params }).then(res => { console.log("inside dispatch function") commit('setAnnouncements', res.data) }).catch(err => { console.log(err) }) },
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda