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

246
Visualizações
La página HTML de Nuxt se carga antes que los datos

Tengo una página dinámica que carga los detalles del producto, pero el html se carga antes que los datos.

Entonces, cuando trato de usar elementos estáticos como una imagen, aparece un error que indica que el objeto "producto" no existe.

Para solucionar esto, le di a cada elemento dinámico v-if="product != undefined" que funciona, pero no parece una muy buena manera de resolver esto.

Estoy iniciando mis datos a través de la tienda así

En mi página hago:

 async mounted() { await this.fetchProducts() }, computed: { product() { return this.$store.state.products.producten.filter(product => product.id == this.$route.params.id)[0] } }

Luego en mi tienda:

 export const state = () => ({ producten: [] }) export const mutations = { setProducts(state, data) { state.producten = data } } export const actions = { async fetchProducts({ commit }) { await axios.get('/api/products') .then(res => { var data = res.data commit('setProducts', data) }) .catch(err => console.log(err)); } }

Intenté reemplazar mount( mounted() con: beforeMount() , created() , fetch() pero ninguno parecía funcionar.

También probé:

 fetch() {return this.$store.dispatch('fetchProducts')} 

 Loader(v-if="$fetchState.pending") Error(v-if="$fetchState.pending") .product(v-else) // Product details...

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Podrías usar el enlace fetch para enviar fetchProducts :

 <script> export default { fetch() { return this.$store.dispatch('fetchProducts') } } </script>

En su plantilla, use el $fetchState.pending para evitar que se muestren los elementos de datos hasta que esté listo:

 <template> <div> <Loader v-if="$fetchState.pending" /> <Error v-else-if="$fetchState.error" /> <Product v-else v-for="product in products" v-bind="product" /> </div> </template>

manifestación

over 4 years ago · Santiago Trujillo 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