javascript - React-Native 无限循环
问题描述
我正在尝试从我firebase-firestore
的 I 中获取数据,并显示加载状态以等待数据加载,但是当它加载时,它会无限次返回 firestore 数据。请有人帮助我。
这是我的代码Paper
只是一个自定义组件
import Paper from '../Components/Paper'
import firebase from 'firebase'
import { useState } from 'react'
const Home = (props) => {
const renderMealItem = (itemData) =>{
return (
<Paper
title={itemData.item.name}
serves={itemData.item.servings}
time={itemData.item.time}
image={itemData.item.imageUri}
/>
)
}
const [loading, setLoading] = useState(false)
const [all, setAll] = useState([])
useEffect(() => {
setLoading(true)
checkReturn()
getUser()
},[])
const checkReturn = () => {
if(all !== undefined){
setLoading(false)
}
}
const getUser = async() => {
try {
await firebase.firestore()
.collection('Home')
.get()
.then(querySnapshot => {
querySnapshot.docs.forEach(doc => {
setAll(JSON.stringify(doc.data()));
});
});
}catch(err){
console.log(err)
}
}
return(
<View style={styles.flatContainer}>
<FlatList
data={all}
keyExtractor={(item, index) => index.toString()}
renderItem={renderMealItem}/>
</View>
)
}
解决方案
尝试传递一个空数组作为参数,useEffect
如下所示:
useEffect(() => {
setLoading(true)
checkReturn()
getUser()
}, [])
推荐阅读
- python - sum 每次都可以被列表的一个元素整除
- c - C - 将错误的指针类型传递给函数
- c++ - 我不能在 C++ 上使用 fmt 库头文件
- java - 更新集合内的列表 dbref
- python - 如何在 Python 中使用 BeautifulSoup 从 html 中提取特定文本?
- sql - ORA-00906: 缺少左括号 oracle 错误可能是因为我弄乱了语法
- python - 在python中实现Backwards Euler方法来解决钟摆
- html - 如何仅对 CSS 中的给定形状应用过滤器?
- javascript - 客户端 JS/Angular 中是否存在 HTTP 连接超时?
- vue.js - Vue js Vue-cli 执行“npm run build”,将图像不透明度的 css 编译为 1%