【发布时间】:2022-01-10 10:23:27
【问题描述】:
我正在尝试构建一个加载组件,以便我的应用在加载之前不会尝试显示我的 API 数据,从而导致致命错误。阅读了很多关于 componentWillMount 函数的内容,但这似乎已被弃用。尝试使用 setState 无济于事。
import { useEffect, useState } from "react";
import Marquee from "react-fast-marquee";
const News = () => {
const [data, setData] = useState({});
const [loading, setLoading] = useState(false);
useEffect(() => {
setLoading(true);
const getNewsFromApi = async () => {
const response = await fetch(
"API_KEY_HERE"
);
const responseJson = await response.json();
console.log("json", responseJson);
setData(responseJson);
};
setLoading(false);
setInterval(getNewsFromApi, 1000)
}, []);
if (loading) {
return <h1> Data is loading...</h1>
}
return (
<div >
<Marquee gradientColor="" speed="120">
<h1>{data?.articles[0].title} - </h1>
<h1>{data?.articles[1].title} - </h1>
<h1>{data?.articles[2].title} - </h1>
<h1>{data?.articles[3].title} - </h1>
<h1>{data?.articles[4].title} - </h1>
<h1>{data?.articles[5].title} - </h1>
<h1>{data?.articles[6].title} - </h1>
<h1>{data?.articles[7].title} - </h1>
<h1>{data?.articles[8].title} - </h1>
</Marquee>
</div>
)
}
export default News
【问题讨论】:
-
加载完成前
data的值是多少?不是undefined或null。这是{}。那么,data?articles的值是多少?这是undefined(即不是数组)。那么data?.articles[0]的值是多少呢?繁荣。 -
data设置为加载数据后所期望的值。在数据加载之前,它的值为{},在const [data, setData] = useState({});行中设置
标签: javascript reactjs json