在 React Native 中使用 Hooks 从 Firebase 实时数据库获取的数据未显示在屏幕上

IT技术 reactjs firebase firebase-realtime-database react-hooks
2021-04-29 04:51:26

我最近开始在 React Native 中使用 Hooks,我正在尝试从 Firebase 实时数据库中获取数据并将其呈现在 FlatList 中。数据以对象格式显示在控制台上,但它不起作用,它没有在屏幕上呈现。我究竟做错了什么?我如何使它正常工作?

我的代码:

import React, { useState, useEffect } from "react";
import { StyleSheet, View, Text, FlatList } from 'react-native';

import firebase from '@firebase/app';
import '@firebase/database';

export default function QuestList({ navigation }) {
  const title = navigation.getParam('title');
  const [data, setData] = useState([]);

  useEffect(() => {
      const db = firebase.database();
      db.ref('/questionnaires/')
        .on('value', snapshot => {
          console.log(snapshot.val());
          const data = snapshot.val();
        });
  }, []);

  return (<FlatList 
    data={data}
    renderItem={
      ({ item, index }) => (<View>
        <Text index={index}>{item.title}</Text>
      </View>)
    }
    keyExtractor={item=>item.id}
    numColumns={2}
    showsVerticalScrollIndicator={false}
    />
  );
}
1个回答

你可能错过了setData电话useEffect

useEffect(() => {
  const db = firebase.database();
  db.ref('/questionnaires/')
    .on('value', snapshot => {
      const response = snapshot.val();
      setData(response);
    });
}, []);