首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >修复数据库无限循环对Js的反应

修复数据库无限循环对Js的反应
EN

Stack Overflow用户
提问于 2022-01-09 21:25:00
回答 1查看 99关注 0票数 1

我的react应用程序链接到了云修复,我试图在js文件中显示对象。

我的Firestore中只有一个对象,但是它一直在循环中读取,我不知道为什么。

来自explore.js的代码(显示来自Firebase的对象)

代码语言:javascript
复制
  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>
        )}

无限回路控制台

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-09 21:30:29

useEffect有一个“触发器”属性。

例:

将在每次呈现上运行。

代码语言:javascript
复制
useEffect(() => {
  //do something
});

只运行一次

代码语言:javascript
复制
useEffect(() => {
  //do something
}, []);

将在给定属性更改时运行。

代码语言:javascript
复制
useEffect(() => {
  //do something
}, [someProperty, someOtherProperty]);

在您的示例中,您正在调用异步函数,异步函数更新状态,并导致重发。由于没有向useEffect添加任何触发器(或空数组),它将一次又一次地运行。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70645647

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档