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

147
Visualizações
Problema de sincronización de reacción con Firebase

 import React from 'react'; import { withStyles } from '@material-ui/core/styles'; import {Card, CardContent, CardActions, Typography, IconButton} from '@material-ui/core'; import firebase from './firebase'; class LikeMusicList extends React.Component{ render () { let db = firebase.firestore(); let snapshot = db.collection("likes"); let list = [] snapshot.get().then(function(querySnapshot) { if (querySnapshot) { querySnapshot.forEach(function(item){ fetch(`https://itunes.apple.com/lookup?id=${item.id}&entity=album`).then(r => r.json()).then(r => { list.push(r.results[0]); console.log(list); }).catch(e => console.log(e)); }) } else { console.log("No such document!"); } }).catch(function(error) { console.log("Error getting document:", error); }); //console.log(list); return ( <div> {console.log(list)} {list.map(item => { <Card key={item.collectionId} className={classes.card}> <CardContent> <Typography variant="subtitle1"> {item.artistName}</Typography> <Typography variant="subtitle2"> {item.collectionCensoredName}</Typography> </CardContent> <img src = {item.collectionViewUrl} alt = {item.collectionName}></img> </Card> })} </div> ); }; } export default LikeMusicList

Quiero hacer la representación de estos datos con la obtención de los álbumes en Itunes. Pero debido a un problema de sincronización, a cambio, la 'lista' de varialbe está vacía. Creo que el código 'snapshot.get().~' se ejecuta antes del retorno, pero el resultado fue inverso. ¿Cómo soluciono este problema?

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

0

Resuelve el problema usando el estado y moviendo la función firestore para reaccionar a la función del ciclo de vida llamada componenteDidMount:

 import React from 'react'; import { withStyles } from '@material-ui/core/styles'; import {Card, CardContent, CardActions, Typography, IconButton} from '@material-ui/core'; import firebase from './firebase'; class LikeMusicList extends React.Component{ state = { list: [] } componentDidMount() { let db = firebase.firestore(); let snapshot = db.collection("likes"); snapshot.get().then(function(querySnapshot) { if (querySnapshot) { querySnapshot.forEach(function(item){ fetch(`https://itunes.apple.com/lookup?id=${item.id}&entity=album`).then(r => r.json()).then(r => { this.setState({ list: r.results[0] }) console.log(r.results[0]); }).catch(e => console.log(e)); }) } else { console.log("No such document!"); } }).catch(function(error) { console.log("Error getting document:", error); }); } render () { return ( <div> {this.state.list.map(item => { <Card key={item.collectionId} className={classes.card}> <CardContent> <Typography variant="subtitle1"> {item.artistName}</Typography> <Typography variant="subtitle2"> {item.collectionCensoredName}</Typography> </CardContent> <img src = {item.collectionViewUrl} alt = {item.collectionName}></img> </Card> })} </div> ); }; } export default LikeMusicList
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