Я получаю список каталогов через хранилище Firebase, а затем, как только он закончится, возвращает список Project
компонентов, которые должны быть отображены, каждый с именем, полученным ранее. Как сначала дождаться завершения выборки, а затем вернуть то же количество Project
компонентов?
Вот что я пробовал:
import React, {useState} from "react"
import "./index.css"
import {hot} from "react-hot-loader"
import Project from "./Project"
import firebase from "./Firebase.js"
function Projects(props){
// Get refereance to firebase storage
let storage = firebase.storage();
// Reference the main projects folder
let storageRef = storage.ref().child('projects');
// Store all project names from firebase storage to then return them as Project components
let projects = []
// This lists the directories in 'Projects'
storageRef.listAll().then(res => {
// For each directory, push the name into the projects array
res.prefixes.forEach((folderRef) => {
projects.push(folderRef.name)
})
}).catch(error => {
console.log(error)
})
return(
<div>
{projects.map(projName => (
<>
<Project project={projName}/>
</>
))}
</div>
)
}
export default hot(module)(Projects)
Однако, когда projects
возвращается, он пуст, так как не ждал, пока forEach завершит sh выше. Кроме того, я не думаю, что оператор возврата в projects.map()
работает. Я пытался выполнить Promise and Asyn c Await, но я не уверен, как его структурировать.