我有我的反應 js 應用程式鏈接到云 Firestore,我正在嘗試在我的 js 檔案上顯示物件。
我的 Firestore 中只有 1 個物件,但它一直在回圈讀取,我不知道為什么。
explore.js 中的代碼(顯示來自 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>
)}
無限回圈控制臺
uj5u.com熱心網友回復:
useEffect 有一個“觸發器”屬性。
前任:
將在每個渲染上運行
useEffect(() => {
//do something
});
只會運行一次
useEffect(() => {
//do something
}, []);
將在給定屬性更改時運行
useEffect(() => {
//do something
}, [someProperty, someOtherProperty]);
在您的情況下,您正在呼叫異步函式,異步函式更新狀態,并導致重新渲染。由于您沒有將任何觸發器(或空陣列)添加到 useEffect,因此它將一次又一次地運行。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/406978.html
標籤:
上一篇:JS遞回回傳未定義
