【发布时间】:2021-07-18 10:56:24
【问题描述】:
我通常从不在这里问任何东西,但我一辈子都无法弄清楚为什么这段代码不起作用。我浏览了无数网站和 youtube 视频,同样的 sn-p 似乎对他们有用。如果有人能引导我朝着正确的方向前进,将不胜感激。
P.S,GetPosts 是我将在我的 nextJs 项目的索引页面上显示的组件。 我知道如果我删除整个 posts.map() 并用一个简单的 helloWorld 文本替换,它会在浏览器中很好地显示......所以问题应该出在我要映射的任何内容上。 我也尝试过为 api 使用另一个链接(一个来自 FakeJson api),但仍然是同样的问题。
export default function GetPosts({posts}){
return (
<div>
{posts.map((post) => {
<div key={post.id}>
title: {post.title}
</div>
})}
</div>
);
}
export const getServerSideProps = async () => {
const response = await fetch("http://localhost:3000/api/getPosts");
const data = await response.json();
return {
props: {
posts: data,
}
}
}
【问题讨论】:
-
你能说明你是如何通过
posts进入你的GetPosts组件的吗?听起来像驱动该道具的任何东西最初都是未定义的(即使您稍后可能会设置填充它)所以您会收到此错误 -
使用
props.posts.map而不是posts.map,因为它是嵌套的 -
链接图像中的控制台输出显示 HTTP 500 错误。此错误与
fetch("http://localhost:3000/api/getPosts")调用有关吗?如果是,则未设置posts,因为调用失败... -
更新:感谢您的回答。我发现出了什么问题。所以似乎 getServerSideProps 在组件中不起作用;因此,我的 GetPosts 组件没有收到道具,导致“未定义”问题
-
随意添加解决方案作为您自己问题的答案。
标签: javascript reactjs next.js