Quiero establecer un estado de carga siempre que la página obtenga los datos de Firestore. Estoy usando esto:
const [isLoading, setIsLoading] = React.useState(true) const fetchGames=async()=>{ let promises = [] const dataDB = await db.collection('event') const eventsFromDb = [] const DB =await db.collection('event').get() DB.docs.forEach((item,index)=>{ const promise = dataDB eventsFromDb[index]= item.data() promises.push(promise); }) setEvents(eventsFromDb) Promise.all(promises) .then(setIsLoading(false)); } useEffect(()=> { fetchGames() if(!isLoading) { console.log("HEY") } }, []) No puedo obtener el HEY en mi consola, ¿cómo solucionarlo?
Tal como está, su método useEffect solo se ejecuta en el montaje del componente. También necesita que se ejecute cuando se actualice el estado.
Solo necesita agregar su estado como un parámetro dentro del argumento de la matriz useEffect . Al igual que:
useEffect(()=> { fetchGames() if(!isLoading) { console.log("HEY") } }, [isLoading]) Esto ejecutará el efecto en el montaje y cuando se actualice el estado isLoading .