【发布时间】:2021-09-01 16:51:11
【问题描述】:
我试图在一个平面列表中显示我在 firebase 上的一堆数据,我现在真的不知道问题出在哪里,我已经尝试过物理填充数组并且它有效,但它没有t 当我从 firebase 获取数据时。我确实看到我在控制台日志中获取了数据,但没有显示出来。
function Squad() {
const gk = [];
db.collection('squad').orderBy('position').get().then(snapshot => {
snapshot.forEach(doc => {
const playerObject = doc.data();
gk.push({name: playerObject.name, number: playerObject.number});
console.log(gk);
});
});
const Item = ({ name, number }) => (
<View style={styles.item}>
<Text style={styles.itemText}>{number} - {name}</Text>
</View>
);
const renderItem = ({ item }) => (
<Item name={item.name} number={item.number} />
)
return(
<View>
<View style={styles.bar}>
<Text style={styles.barText}>goalkeeper</Text>
</View>
<FlatList
data={gk}
renderItem={renderItem}
keyExtractor={item => item.id}
/>
</View>
)
}
【问题讨论】:
-
我敢打赌 get() 是异步的。将您的 db 调用置于 useEffect 中,然后在获得结果时重新构建。
-
我从来没有使用过useEffect,它是如何工作的?
-
useEffect 你将把你的 db 调用放在 useEffect 中,然后在得到结果时触发重建。
-
我试过用 useEffect 还是不行
-
告诉我你尝试了什么。
标签: javascript android firebase react-native google-cloud-firestore