【发布时间】:2023-01-07 01:52:17
【问题描述】:
我已经成功地从 useEffect 挂钩中的“https://jsonplaceholder.typicode.com/posts”获取帖子数据,即响应已成功记录到控制台,其中包含数据(帖子)的数据属性,同样,response.data 也被记录到带有实际帖子数据的控制台,但我无法通过使用 useState 钩子提供的 setPosts setter 将获取的帖子设置为帖子状态当我在成功获取帖子后将帖子记录到控制台时,我的帖子状态是空数组 [] 和用户界面也不显示任何帖子。 我正在使用 React v 18.2.0 谁能帮我解决这个问题?下面是我的代码!
import './App.css';
import { useEffect, useState } from 'react';
import axios from 'axios';
function App() {
const [posts, setPosts] = useState([])
useEffect(() => {
(async () => {
const response = await axios.get("https://jsonplaceholder.typicode.com/posts")
console.log(response)
const data = response.data
// data contains all the posts which are successfully logged
console.log(data)
// Here posts is logged as empty array [].........why?
setPosts(data)
console.log("posts are", posts)
})()
},[])
return (
<div className="App">
{posts.map(post => {
<>
<li key={post.id}> {post.title}</li>
<p>{post.body}</p>
</>
})}
</div>
);
}
export default App;
我已经成功地从 useEffect 挂钩中的“https://jsonplaceholder.typicode.com/posts”获取帖子数据,即响应已成功记录到控制台,其中包含数据(帖子)的数据属性,同样,response.data 也被记录到带有实际帖子数据的控制台,但我无法通过使用 useState 钩子提供的 setPosts setter 将获取的帖子设置为帖子状态当我在成功获取帖子后将帖子记录到控制台时,我的帖子状态是空数组 [] 和用户界面也不显示任何帖子。
【问题讨论】:
-
由于存在陈旧的关闭案例,帖子将被记录为空数组。在您的函数运行一次后,您可以记录帖子并在那里获取数据。
-
@SnehilAgrahari 你能解释一下你的意思吗?
-
@DreamBold 是的,它们已被记录到控制台,但它们没有显示在 UI 中,您能否也指导我,我正在映射数据,正如您在我提供的代码中看到的那样
-
@DreamBold 非常感谢!有效!
-
@DreamBold 再次感谢!
标签: reactjs react-hooks axios fetch