1
resposta

duvidas sobre async

Estou desenvolvendo um projeto pessoal para aprendizado mais estou com um problema, vou mostrar o codigo:

import React from 'react'

import firebase from "firebase/app"
import "firebase/database";
import Foto from './CriaCategoria.js'

export default function App() {
  let database = firebase.database();

  function lista() {
    const dbRef = database.ref();
    let teste = []

    dbRef.child("categorias").child('Listas').get().then((snapshot) => {
      snapshot.forEach((val) => {
        async function Capa() {
          return await val.val().FotoCapa
        }
        async function Nome() {
          return await val.val().nome
        }
        teste.push({ capa: Capa, nome: Nome })

      })

    })
    return (
      teste
    )
  }
  const children = lista().map((val) => {
    return (
      <Foto nome={val["nome"]} link={val["capa"]} id={val['nome']} />
    )
  })


  return (
    children
  )
}

preciso bucar alguns links de fotos guardados no firebase Realtime que a função lista() faz para min com o retorno de um objeto, em seguida crio uma constante children que vou pegar o objeto de lista() e usar o map() que me retorna a criação de um elemento img em <Foto />, e por fim no retorno da minha função exportada uso o children. (Não sei se expliquei correto)

O problema, minha constante children não aguarda o função lista() fazer o retorno do objeto e executa com um objeto vazio fazendo com que a constante tenha um retorno vazio, fazendo assim com que não tenha nenhuma imagem para renderizar.

(não sei muito de React e peço desculpas pela desorganização do codigo), quem puder ajudar agradeço, se ficou duvidas sobre a explicação me perguntem, obrigado.

1 resposta

Olá, Felipe. tudo bem? Olhei rapidamente e se não me engano, na assinatura do método lista() deveria ter o async. Algo como, async function lista(){ Caso não seja esse problema, fique a vontade para enviar aqui ;)