如何获取 Firebase Json api,我得到了响应,我可以控制台记录它,但是 FlatList 的问题

How to fetch Firebase Json api, I got response and i can consol log it, But the problem with FlatList

我想获取一个 API,它是一个 Firebase JSON 响应

这是 URL : https://learn-efc13-default-rtdb.firebaseio.com/products.json

这是我的代码:

  const [data, setData] = useState([]);

  useEffect(() => {
    Get();
  }, []);

  function Get() {
    axios
      .get("https://learn-efc13-default-rtdb.firebaseio.com/products.json")
      .then(async function (response) {
        setData(response.data);
        console.log(response.data);
      })
      .catch((err) => console.error(err));
  }

这是我的 FlatList:

     <FlatList
        data={data.products}
        keyExtractor={(item) => item.id.toString()}
        renderItem={({ item }) => <Text>{item.age}{item.name}</Text>}
      />

我的问题是我得到了响应,但我无法在文本组件中显示它

我查看了您的 JSON 端点,但没有看到名为 products 的 属性。从端点返回的数据看起来也像是一个对象。 FlatList 期望将一个数组传递到 data 道具中(参见此处的示例 https://reactnative.dev/docs/flatlist)。

我假设这就是 FlatList 组件未返回任何内容的原因。

因此,要更正此问题,您需要确保 products 出现在您的 API 的响应中,并且您需要确保您传递到 <FlatList /> 是一个数组。

附带一提,我注意到您在 axios.get() 的承诺回调中使用了 async,但看起来您并没有在功能,所以你可能不需要它。