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

261
Visualizações
Usar async await para recuperar imágenes del almacenamiento de firebase en reaccionar

Tengo un gancho useEffect con dos funciones dentro, la primera (fetchImages) obtiene todas las imágenes de usuario almacenadas en el almacenamiento de firebase.

El segundo (loadImages) espera a fetchImages y establece la imagen en una matriz de estado. El problema es que la matriz de imágenes regresa vacía a menos que vaya a una página diferente y regrese ... entonces la matriz se llena con las URL de las imágenes.

No estoy seguro de si algo anda mal con mi gancho useEffect o mi ubicación de espera asíncrona, o algo más. La verificación if para currentUser se debe a que currentUser devuelve como nulo en la primera carga.

 const [images, setImages] = useState([]); // All user images from storage useEffect(() => { if (currentUser) { const fetchImages = async () => { setLoading(true) const result = await storage.ref(`images/${currentUser.id}`).listAll(); console.log(result) const urlPromises = result.items.map((imageRef) => imageRef.getDownloadURL() ); console.log(urlPromises) return Promise.all(urlPromises); }; const loadImages = async () => { const images = await fetchImages(); setImages(images); setLoading(false); }; loadImages(); } console.log(loading) }, []); console.log(images, image)

El archivo currentUser userContext

 export const UserContextProvider = ({ children }) => { const [currentUser, setUser] = useState(null); // const [currentUser, setUser] = useState(''); useEffect(() => { let unsubscribeFromAuth = null; unsubscribeFromAuth = auth.onAuthStateChanged(async userAuth => { if (userAuth) { const userRef = await createUserProfileDocument(userAuth); userRef.onSnapshot(snapShot => { setUser({ id: snapShot.id, ...snapShot.data() }); }); } else { setUser(null) } }); return () => { unsubscribeFromAuth(); }; }, []) // console.log(unsubscribeFromAuth) const toggleUser = () => { auth.signOut() .then(() => { window.localStorage.clear(); }) .then(() => { setUser(null) }) .catch(e => console.log('There was a error:'(e))) }
over 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Agregue currentUser a la matriz de dependencias del gancho useEffect . Cuando el estado currentUser del usuario se actualiza, desea que el efecto secundario sea obtener las imágenes relacionadas o borrarlas.

 const [images, setImages] = useState([]); // All user images from storage useEffect(() => { if (currentUser) { const fetchImages = async () => { const result = await storage.ref(`images/${currentUser.id}`).listAll(); const urlPromises = result.items.map((imageRef) => imageRef.getDownloadURL() ); return Promise.all(urlPromises); }; const loadImages = async () => { setLoading(true); try { const images = await fetchImages(); setImages(images); } catch(error) { // handle error, log it, show message, etc... } setLoading(false); }; loadImages(); } else { setImages([]); } }, [currentUser]);
over 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