Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

368
Views
Cargar imágenes desde el almacenamiento de Firebase para reaccionar

Estoy tratando de recuperar una URL de imagen de Firebase Storage y luego configurar una imagen con esa URL. Sin embargo, parece que estoy configurando el src en un valor indefinido con mi código actual:

Esta es mi función que estoy usando para recuperar de Firebase Storage

 import {Firebase, FirebaseAuth, FirebaseDatabase, FirebaseStorage} from '../Initialize' export function getProfilePictureUrl(uid, callback, onErrorCallback) { var pathReference = FirebaseStorage.ref('profiles/' + uid + '/profilePicture.jpeg'); pathReference.getDownloadURL().then((url) => { callback(url); }).catch((error) => { onErrorCallback(error); }); }

Lo llamo desde un React Component que usa la función así:

 render() { let profilePictureUrl = getProfilePictureUrl(uid, (url) => { console.log(url); // The console.log(url) returns a valid and working url for the image. So I know my imports are correct return url; }, (error) => { console.log(error.code); return ""; }) return ( <img src={profilePictureUrl} /> ); }

La imagen no se carga correctamente porque ProfilePictureUrl devuelve undefined.

También traté de hacer un probador dentro de render() como este:

 render() { if(profilePictureUrl !== undefined) { console.log("defined"); } else { console.log("undefined"); } // returns 'undefined' }

Y estaba registrando la respuesta else que indicaba que la función devolvía un valor indefinido. Mi sospecha es que tiene algo que ver con la naturaleza asíncrona de Firebase, pero no estoy seguro de cómo resolverlo.

Esta pregunta puede estar relacionada con: React-Native: Descargar imagen de Firebase Storage

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Encontré esto a través de Google y decidí responder en caso de que otros también lo encuentren.

Su ejemplo no funciona porque React no actualiza el componente cuando se resuelve la promesa. Esto significa que la URL de su imagen permanece undefined .

Para solucionar esto, puede llamar a this.setState() en la promesa (o enviar una acción si está usando flux/redux). Esto actualizará automáticamente el estado con la nueva URL.


ejemplo de código

 const config = { apiKey: "apiKey", authDomain: "authDomain", storageBucket: "bucketURL" } firebase.initializeApp(config) const storage = firebase.storage().ref() class HelloMessage extends React.Component { constructor () { super() this.state = { lithuania: '', uk: '' } this.getImage('lithuania') this.getImage('uk') } getImage (image) { storage.child(`${image}.png`).getDownloadURL().then((url) => { this.state[image] = url this.setState(this.state) }) } render() { return ( <div> Hello Lithuania<br /> <img src={ this.state.lithuania } alt="Lithuanian flag" /> <br /> Hello United Kingdom<br /> <img src={ this.state.uk } alt="UK flag" /> </div> ); } }

Codepen completo: https://codepen.io/DeividasK/pen/pRmbWq

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!