Reactjs 屏幕上不显示使用挂钩在React Native中从Firebase实时数据库获取的数据

Reactjs 屏幕上不显示使用挂钩在React Native中从Firebase实时数据库获取的数据,reactjs,firebase,firebase-realtime-database,react-hooks,Reactjs,Firebase,Firebase Realtime Database,React Hooks,我最近开始在React Native中使用钩子,我正在尝试从Firebase实时数据库获取数据,并将其呈现在FlatList中。数据以对象格式显示在控制台上,但它不工作,不能在屏幕上呈现。我做错了什么?如何使其正常工作 我的代码: import React, { useState, useEffect } from "react"; import { StyleSheet, View, Text, FlatList } from 'react-native'; import

我最近开始在React Native中使用钩子,我正在尝试从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}
    />
  );
}
import React,{useState,useffect}来自“React”;
从“react native”导入{样式表、视图、文本、平面列表};
从“@firebase/app”导入firebase;
导入'@firebase/database';
导出默认函数QuestList({navigation}){
const title=navigation.getParam('title');
const[data,setData]=useState([]);
useffect(()=>{
const db=firebase.database();
db.ref(“/问卷/”)
.on('value',快照=>{
console.log(snapshot.val());
const data=snapshot.val();
});
}, []);
报税表((
{item.title}
)
}
keyExtractor={item=>item.id}
numColumns={2}
showsVerticalScrollIndicator={false}
/>
);
}

您的
useffect

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

如果没有async,仍然无法工作它只在控制台上打印数据,但我无法在屏幕上显示它