簡體   English   中英

我應該在平面列表中輸入什么來獲取 json API,我得到了響應,我可以 consol.log 它

[英]What should I type in flat list to fetch that json API, I got the response and I can consol.log it

I try to fetch data from Firebase with Axios and Redux to handle the state, Everything Is fine and I could console.log the data too, but FlatList doesn't show any data, Here is my Code:

這是 Redux 的動作。

import axios from "axios";
import {  GET_PRODUCTS } from "./types";

export const fetchData = () => {
  return (dispatch) => {
    return axios
      .get("https://learn-efc13-default-rtdb.firebaseio.com/products.json")
      .then((response) => {
        return response.data;
      })
      .then((data) => {
        dispatch({
          type: GET_PRODUCTS,
          payload: data,
        });
        console.log(data);
      })

      .catch((error) => {
        throw error;
      });
  };
};

這是減速機

import { GET_PRODUCTS } from "./types";

const initState = {
  availableProducts: [],
};

const reducer = (state = initState, action) => {
  switch (action.type) {
    case GET_PRODUCTS:
      return {
        availableProducts: action.availableProducts,
      };
    default:
      return state;
  }
};
export default reducer;

最后是包含 FlatList 的屏幕

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

import { useDispatch, useSelector } from "react-redux";
import { fetchData } from "./store/action";

function ScreenMain() {
  useEffect(() => {
    dispatch(fetchData());
  }, [dispatch]);

  const data = useSelector((state) => state.availableProducts);
  const dispatch = useDispatch();

  return (
    <View style={styles.con}>
      <FlatList
        data={data}
        keyExtractor={(item) => item.id.toString()}
        renderItem={({ item }) => (
          <Text>
            {item.name}
            {item.age}
          </Text>
        )}
      />
    </View>
  );
}

export default ScreenMain;

我在 console.log 數據中添加了 useEffect 掛鈎

你能像這樣包裝<FlatList />

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM