如何在 React 中的文本字段中显示来自 API 的内容?
2021-04-12
2046
概述:
我试图将一些内容放入文本字段中进行编辑,但出现了错误。
问题:
我收到一条错误消息,提示
TypeError:无法读取未定义的属性“favorite_animal”
我的代码:
// import ...
// import ...
function getDataFromApi(id) {
var url =
"https://api.example.com/" + id;
return fetch(url, {
method: "GET",
headers: {
Accept: "application/json",
"Content-Type": "application/json",
},
})
.then((response) => response.json())
.then((responseData) => {
return responseData;
})
.catch((error) => console.warn(error));
}
function myFunction(props) {
const [data, setData] = useState([]);
useEffect(() => {
getDataFromApi(props.id).then((response) => setData(response));
}, []);
return (
<>
<Form>
<TextField>{data.details.favorite_animal}</TextField>
</Form>
</>
);
}
export default myFunction;
有什么想法吗?
1个回答
由于您使用的是 fetch,因此获取此数据需要一些时间,因此它尚未在初始化时准备好,您必须添加问号,例如:
<TextField>{data.details?.favorite_animal}</TextField>
因此,它首先会检查
data.details
是否存在,如果存在,则从中获取
favorite_animal
值
但如果您确定从 API 中获取
data.details.favorite_animal
,则此方法有效。如果
getDataFromApi
函数中的代码有误,并且您没有获取此数据,则不会显示任何内容
Sowam
2021-04-12