Javascript 使用映射方法在React native中显示对象数组
我有以下组件,我想在其中显示来自API的数据,ShopScreen.js。我使用useEffect钩子从服务文件夹中的API检索数据,一切正常,当我console.log它时,json数据正在从useState钩子加载到数据变量中。 我无法使用map方法显示此变量中的数据。我得到错误:无法读取未定义的属性“map”。你能找出问题所在吗? ShopScreen.js: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
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
是否可用。我第一次看到这种语法。谢谢