Tengo mi aplicación reaccionar js vinculada a la nube Firestore y estoy tratando de mostrar los objetos en mi archivo js.
Solo tengo 1 objeto en mi Firestore, pero sigue leyendo en un bucle y no puedo entender por qué.
Código de explore.js (muestra objetos de Firebase)
const [nft,setNft]=useState([]) const getNft= async()=>{ const nft = await fs.collection('NFT').get(); const nftArray=[]; for (var snap of nft.docs){ var data = snap.data() data.ID = snap.id; nftArray.push({ ...data }) if(nftArray.length===nft.docs.length){ setNft(nftArray); } } } useEffect(()=>{ getNft(); })} {nft.length > 0 && ( <div> <div className='cardContainer'> <Nft nft={nft}/> </div> </div> )} {nft.length < 1 && ( <div className='loading'>Loading products..</div> )}useEffect tiene una propiedad de "disparador".
ex:
Se ejecutará en cada render
useEffect(() => { //do something });Se ejecutará solo una vez
useEffect(() => { //do something }, []);Se ejecutará cuando cambien las propiedades dadas
useEffect(() => { //do something }, [someProperty, someOtherProperty]);En su caso, está llamando a la función asíncrona, la función asíncrona actualiza el estado y provoca una nueva representación. Como no tiene ningún disparador (o matriz vacía) agregado al useEffect, se ejecutará una y otra y otra vez.