我尝试使用fetch请求从我的后端API中检索文章数据并将其显示在屏幕上。请求成功检索数据,但是当我尝试使用setArticle钩子更新组件变量的状态时,什么也没有发生,请求完成时没有传入任何数据。
function Home(props) {
const [articles, setArticles] = useState([]);
useEffect(() => {
fetch(`http://localhost:8000/api/articles/`, {
method: 'GET',
})
.then(response => response.json())
.then(result => {
if (result.error) {
console.log('Error:', result.error);
return false;
}
console.log(result);
setArticles(result);
console.log(articles);
})
}, [])
const articleList = articles.map((article) =>
<ArticleCard article={article} width='400'/>
)
return(
<ul className="article-list">
{articleList}
</ul>
)
}
export default Home;
我已经在www.example.com上阅读了React文档https://react.dev/reference/react/useState#ive-updated-the-state-but-logging-gives-me-the-old-value,钩子仍然令人难以置信地困惑。我明白状态不会更新,但这个例子发生在fetch请求之外,所以新变量被存储。我应该如何让articles变量更新或返回新变量,以便我可以将json数据Map到articleList?
2条答案
按热度按时间eoigrqb61#
试试这个,你的代码运行良好。我使用了虚拟数据,数据可以很容易地呈现在屏幕上。
biswetbf2#
如果你在这里使用redux和redux-thunk会更好。
redux是一个智能存储,redux-thunk是一个中间件,用于发出类似于fetch的请求。