javascript - 获取随机json得到第一个未定义然后结果
问题描述
reactjs 初学者,尝试获取随机 json,得到我想要的结果,但不是我想要的方式,由于某种原因,它首先打印“未定义”,然后再打印结果。为什么我不能得到结果而没有这个'?我的代码:
import { useEffect, useState } from "react";
import "./App.css";
function App() {
const [thumbnail, setThumbnail] = useState([]);
useEffect(() => {
fetch("https://jsonplaceholder.typicode.com/photos")
.then((response) => response.json())
.then((json) => {
setThumbnail(json);
});
}, []);
console.log(thumbnail[0]?.thumbnailUrl);
return (
<div className="App">
<h1>Build</h1>
<p></p>
</div>
);
}
export default App;
解决方案
App() 里面的console.log() 直接会使用初始状态。缩略图是空的,因此它将显示未定义。
要检查thumbnail
,您应该使用另一个useEffect
添加thumbnail
依赖项。
useEffect(() => {
if (thumbnail.length > 0) {
console.log(thumbnail[0].thumbnailUrl);
}
}, [thumbnail]);
import { useEffect, useState } from "react";
import "./App.css";
function App() {
const [thumbnail, setThumbnail] = useState([]);
const [isLoaded, setLoaded] = useState(false);
useEffect(() => {
fetch("https://jsonplaceholder.typicode.com/photos")
.then((response) => response.json())
.then((json) => {
setLoaded(true);
setThumbnail(json);
});
}, []);
useEffect(() => {
if (isLoaded) {
console.log(thumbnail[0]?.thumbnailUrl);
}
}, [thumbnail]);
return (
<div className="App">
<h1>Build</h1>
<p></p>
</div>
);
}
export default App;
推荐阅读
- excel - VBA 无法识别 Excel 文件
- c++ - 如何在没有死锁和/或竞争的情况下在 C++ 中正确使用 std::mutex?
- visual-studio-code - 如何在 F5 或 Ctrl+F5 上从 VSCode 启动 Angular 应用程序和 WebApi 服务
- angular - 您应该取消订阅 Angular 服务中的事件吗?
- python - 如何让 Hexchat 接受 python 3.7+
- c - GDB - read.c:没有这样的文件或目录
- opencv - 如何检测大小可能不同的部分矩形
- c# - ASP.NET Core 自定义验证创建模型的新实例
- android - React-native - 应用程序在模拟器上运行但不在真实设备中
- eclipse - 如何使用 Eclipse EMF 从方法中返回类型列表?