作为我正在做的一个项目的一部分,我正在为我们的react应用程序制作一个博客页面。然而,我在显示博客文章时遇到了麻烦。
我在我的express后端上设置了一个调用,用于从我的MYSQL数据库中检索我的所有帖子,如下所示:
// Route to get all posts
app.get("/api/get", (req, res) => {
con.query("SELECT * FROM posts", (err, result) => {
if (err) {
console.log(err)
}
res.send(result)
});
});
在前端,我使用以下代码从API调用中获取数据:
const [postList, setPostList] = useState([]);
useEffect(() => {
Axios.get("http://localhost:3002/api/get").then((data) => {
console.log(data)
setPostList(data.data)
});
}, [])
要显示文章,我在这里使用以下代码:
<div className="PostContainer">
{postList.map((val, key) => {
return (
<div className="Post" >
<h1 className="post-title" onClick={() => (navigate(`/post/${val.id}`))}>{val.title}</h1>
<p>{val.post_text.length > 300 ? val.post_text.substring(0, 300) + " ..." : val.post_text}</p>
<h4>{val.user_name}</h4>
<button className="like_btn" onClick={(() => LikePost(val.id))}>Like</button>
<h5>Likes: {val.likes}</h5>
</div>
)
})}
</div>
这一切对我来说似乎都很好,但显然有些地方出了问题,因为没有一个帖子显示。
1条答案
按热度按时间rqcrx0a61#
经过仔细检查,我发现浏览器上的控制台抛出了以下错误:
跨来源请求被阻止:同源策略不允许阅读localhost:3001/API/get上的远程资源。(原因:CORS标题“访问控制-允许-来源”缺失)。状态代码:200.
在做了更多的研究之后,我发现我必须包含一些代码,以便我的后端将信息发送到前端。这是我实现的代码:
这已经解决了我的问题,博客文章现在显示正确的信息。