【发布时间】:2022-02-06 13:57:53
【问题描述】:
我正在尝试从Nodejs 服务器获取图像。每当我第一次刷新页面或打开它时,数据都没有存储在 React state 变量中,因此状态值给出了 null,因此我无法在客户端显示图像.
这是我的 React 代码:
const Images = ()=>{
const [images,setImages] = useState([]);
var res=[];
useEffect(()=>{
function fetchData(){
instance.get('/Index/getphoto')
.then(res=>{
console.log(res);
setImages(res.data);
console.log(images);
})
}
fetchData();
},[])
return(
<>
{
images.map((item)=>{
return(
<div key={item.id}>
<img src={`http://localhost:3000/${item.img}`} alt="anything" />
</div>
)
})
}
</>
);
}
在上面的fetchData 函数中,我从端点获取所有数据,但是当我尝试使用setImages(res.data) 将这些数据存储在images 状态变量中时,它没有存储在那里,我得到了在我的控制台中出现以下结果:
【问题讨论】:
-
我不完全理解这个问题。状态不是持久的——当应用程序关闭或重新加载时它会被清除——所以在应用程序加载的那一刻,状态只有提供的初始值,在这种情况下是
[]。这是你的问题,还是fetchData函数没有成功?您可以提供任何错误消息吗? -
是的,fetchData 函数没有成功。我没有收到任何错误,只是 console.log(images) 给了我一个空数组,即使 console.log(res) 显示了我想要的所有数据,但它没有以图像状态存储。
-
如果
console.log(res)显示数据,则fetchData成功。听起来setImages不起作用。您能否使用这些详细信息以及获取结果更新您的问题? -
我更新了问题。请看一下,请纠正我。
-
set function fetchData out of useEffect