Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用映射方法在React native中显示对象数组_Javascript_Json_Reactjs_React Native - Fatal编程技术网

Javascript 使用映射方法在React native中显示对象数组

Javascript 使用映射方法在React native中显示对象数组,javascript,json,reactjs,react-native,Javascript,Json,Reactjs,React Native,我有以下组件,我想在其中显示来自API的数据,ShopScreen.js。我使用useEffect钩子从服务文件夹中的API检索数据,一切正常,当我console.log它时,json数据正在从useState钩子加载到数据变量中。 我无法使用map方法显示此变量中的数据。我得到错误:无法读取未定义的属性“map”。你能找出问题所在吗? ShopScreen.js: import React, { useState, useEffect } from 'react'; import { View

我有以下组件,我想在其中显示来自API的数据,ShopScreen.js。我使用useEffect钩子从服务文件夹中的API检索数据,一切正常,当我console.log它时,json数据正在从useState钩子加载到数据变量中。 我无法使用map方法显示此变量中的数据。我得到错误:无法读取未定义的属性“map”。你能找出问题所在吗? ShopScreen.js:

import React, { useState, useEffect } from 'react';
import { View, Text, StyleSheet, Button } from 'react-native';
import { fetchShops } from '../services/fetchShops';

const ShopsScreen = props => {
    const [data, setShops] = useState({});

    useEffect(() => {
        fetchShops()
            .then(response => response.json())
            .then(data => setShops(data));
    }, []);

    return(
        <View>
            <Text>The Shops Screen!</Text>
                {data.result.map(shop => {return (<Text>{shop.address}</Text>)})}
        </View>
    );
};

export default ShopsScreen;
您可以尝试:

const [data, setShops] = useState({result : {}});
或者在使用map之前测试
数据。结果

shopscreen
在从RESTAPI获得答案之前返回视图(JSX)。结果是
null
。您会遇到异常。

您可以尝试:

const [data, setShops] = useState({result : {}});
或者在使用map之前测试
数据。结果


shopscreen
在从RESTAPI获得答案之前返回视图(JSX)。结果是
null
。您将获得异常。

useffect
不带任何参数等于
componentDidMount
,因此在渲染后调用

因此,第一次调用jsx代码时,
data.result.map
是未定义的,只有在重新渲染后,对
fetchShops()
的响应执行操作,它才有一个值

您只需检查如下值:


data.result&&data.result.map()
useffect
不带任何参数等于
componentDidMount
,因此在渲染后调用

因此,第一次调用jsx代码时,
data.result.map
是未定义的,只有在重新渲染后,对
fetchShops()
的响应执行操作,它才有一个值

您只需检查如下值:


data.result&&data.result.map()

尝试这样的操作
{data.result&&data.result.map(shop=>{return({shop.address}}}})}
Sajeeb-Ahamed这是什么意思?在使用map.Aha之前检查
data.result
是否可用,因为异步调用。我第一次看到这种语法。谢谢。在使用map.Aha之前,请尝试这样的
{data.result&&data.result.map(shop=>{return({shop.address}})}
Sajeeb-Ahamed这是什么意思?请检查
data.result
是否可用。我第一次看到这种语法。谢谢