带有Firestore的FlatList?反应本机

时间:2020-08-12 02:24:28

标签: reactjs firebase react-native google-cloud-firestore

我确定这是很普遍的事情,但似乎无法弄清楚。每个用户在Firestore中都有一个“ books”数组,这就是我希望在Flatlist中返回的内容,我在哪里出错?使用Firebase的第一天,所以我很确定它是基本的东西。谢谢:)

                <FlatList
                    data={() => { db.collection('users').doc(userEmail).data() }}
                    numColumns={2}
                    ListEmptyComponent={
                        <View style={styles.flatListEmpty}>
                            <Text style={{ fontWeight: 'bold' }}>Add Books Below</Text>
                        </View>
                    }
                    renderItem={({ item }) => (
                        <View style={styles.flatListStyle}>
                            <Text>book</Text>
                        </View>
                    )}
                />

然后是数据库:

enter image description here

1 个答案:

答案 0 :(得分:2)

问题是对firebase的查询是异步操作,因此您需要解决该操作,然后将结果存储到组件状态并将该状态分配给平面列表。示例:

const Component = () => {

    const [data, setData] = useState();

    const getData = async () => {
        const snapshot = await db.collection('users').doc(userEmail).get()

        setData(snapshot.data())
    }

    useEffect(() => {
        getData()
    }, [])

    return (
        <FlatList
        data={data.books}
        numColumns={2}
        ListEmptyComponent={
            <View style={styles.flatListEmpty}>
                <Text style={{ fontWeight: 'bold' }}>Add Books Below</Text>
            </View>
        }
        renderItem={({ item }) => (
            <View style={styles.flatListStyle}>
                <Text>book</Text>
            </View>
        )}
    />
    )
}