首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >React Native Download JSON,但不显示在平面列表中

React Native Download JSON,但不显示在平面列表中
EN

Stack Overflow用户
提问于 2021-08-04 12:10:44
回答 2查看 51关注 0票数 0

我正在尝试下载JSON。React Native正在下载json,但我不确定为什么Flatlist不显示这些项目。如果我将扁平列表中的data={dummyData}更改为data={MyList},则扁平列表可以显示。

代码语言:javascript
运行
复制
let viewableItemsChanged = null;
const dummyData = GrabData('http://hunterdata.serveblog.net/10record.json');

const MyList = [
    {"id":"0","title":"MyBook0","url":"URLBook-0","image":"image-0" },
    {"id":"1","title":"MyBook1","url":"URLBook-1","image":"image-1" },
    {"id":"2","title":"MyBook2","url":"URLBook-2","image":"image-2" },
    {"id":"3","title":"MyBook3","url":"URLBook-3","image":"image-3" },
    {"id":"4","title":"MyBook4","url":"URLBook-4","image":"image-4" },
    {"id":"5","title":"MyBook5","url":"URLBook-5","image":"image-5" }];


async function GrabData(TheURL) {
  let abc = [];
  try {
    let response = await fetch(TheURL, {headers: {'Cache-Control' : 'no-cache'}});
    let responseJson = await response.json();
    console.log(responseJson);
    return responseJson;
  } catch (error) {
    console.error(error);
  }
}

const renderItem = ({item}) => {
  return <View><Text>{item.title}</Text></View>
}

const List = () => {
  return (
    <FlatList
      style={styles.list}
      data={dummyData}
      renderItem={renderItem}
    />

  )
};
EN

回答 2

Stack Overflow用户

发布于 2021-08-04 12:36:12

您的代码有问题。您正在调用不带await关键字的async function。所以它返回未定义的响应,如下所示。{"_U": 0, "_V": 0, "_W": null, "_X": null}

请尝试此解决方案。

代码语言:javascript
运行
复制
import React, { useEffect , useState } from 'react';
    import { SafeAreaView, View, FlatList, StyleSheet, Text, StatusBar } from 'react-native';
    
    const Item = ({ title }) => (
      <View style={styles.item}>
        <Text style={styles.title}>{title}</Text>
      </View>
    );
    
    const App = () => {
       
        
        const [data, setData] = useState([])
       
         useEffect(() => {
            apicall();
        },[])
    
        const apicall = async () => {
            let dd = await GrabData("http://hunterdata.serveblog.net/10record.json");
            setData(dd)
        }
        
        const GrabData = async (TheURL) => {
            try {
                let response = await fetch(TheURL, {headers: {'Cache-Control' : 'no-cache'}});
                let responseJson = await response.json();
              
                return responseJson;
              } catch (error) {
                console.error(error);
              }
        }
    
    
        const renderItem = ({ item }) => (
            <Item title={item?.title} />
        );
    
      return (
        <SafeAreaView style={styles.container}>
          <FlatList
            data={data}
            renderItem={renderItem}
            keyExtractor={item => item?.id}
          />
        </SafeAreaView>
      );
    }
    
    const styles = StyleSheet.create({
      container: {
        flex: 1,
        marginTop: StatusBar.currentHeight || 0,
      },
      item: {
        backgroundColor: '#f9c2ff',
        padding: 20,
        marginVertical: 8,
        marginHorizontal: 16,
      },
      title: {
        fontSize: 32,
      },
    });
    
    export default App;
票数 0
EN

Stack Overflow用户

发布于 2021-08-04 12:14:04

您应该在componentDidMount中激活函数,同时尝试状态而不是常量

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68651029

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档