arrays - TypeError:无法读取未定义的 React Hooks 的属性“地图”
问题描述
我需要一些帮助来理解为什么我从标题中得到错误:'TypeError:无法读取未定义的属性'map''。我需要在页面上呈现(例如此处的州和国家/地区)来自 API 的一些数据,但由于某种原因无法正常工作。
import React, { useEffect, useState } from 'react';
import axios from 'axios';
const APIFetch = () => {
const [user, setUser] = useState('');
const [info, setInfo] = useState([]);
const fetchData = async () => {
const data = await axios.get('https://randomuser.me/api');
return JSON.stringify(data);
}
useEffect(() => {
fetchData().then((res) => {
setUser(res)
setInfo(res.results);
})
}, [])
const getName = user => {
const { state, country } = user;
return `${state} ${country}`
}
return (
<div>
{info.map((info, id) => {
return <div key={id}>{getName(info)}</div>
})}
</div>
)
}
你们能给我一些帮助吗?谢谢。
解决方案
试试这个方法,
const APIFetch = () => {
const [user, setUser] = useState("");
const [info, setInfo] = useState([]);
const fetchData = async () => {
const data = await axios.get("https://randomuser.me/api");
return data; <--- Heres is the first mistake
};
useEffect(() => {
fetchData().then((res) => {
setUser(res);
setInfo(res.data.results);
});
}, []);
const getName = (user) => {
const { state, country } = user.location; <--- Access location from the user
return `${state} ${country}`;
};
return (
<div>
{info.map((info, id) => {
return <div key={id}>{getName(info)}</div>;
})}
</div>
);
};
- 在.
data
_fetchData
- 进入
user.location
内部getName
。
代码库 - https://codesandbox.io/s/sharp-hawking-6v858?file=/src/App.js
推荐阅读
- c++ - 类中的同步变量,它们是父类和子类
- splunk - 使用 splunk 进行 API 监控
- typescript - 当我尝试用黄瓜运行量角器测试时,出现以下错误消息“E/launcher - Process exited with error code 1”
- gnu-make - 在 iseries 上使用 makefile 时遇到问题
- c# - Counter不是单实例,调用next时需要指定实例名
- c# - C# 变量在赋值后没有改变,改变显示在 UI 中
- android - 如何将图像从服务器(api)存储到房间数据库
- guidewire - Guidewire 索赔中心 6/8 版和 10 版之间的区别
- javascript - Lodash:对 json 对象进行分组和重组
- spring-cloud-contract - 消费者是否需要等待提供者在 Spring Cloud Contract 中运行第一轮测试?