reactjs - 页面“/[slug]”的“getInitialProps”结果中的循环结构
问题描述
我遇到了这个错误,已经阅读了文档和其他答案,但仍然不明白为什么。
我想做的是一个 api 调用,如果有匹配的帖子,我想渲染 Post 组件,如果没有,我想重定向或渲染错误页面。
当我点击一个现有的帖子链接时,我得到了帖子,但是当我随机放置一些东西来生成 404 状态时,我得到了标题错误。
这是我的帖子页面:
const PostPage = ({ post }) => {
return (
<>
{post.status === 200 ? (
<Post post={post.data.items[0]} />
) : (
<Error statusCode={post.status} />
)}
</>
);
};
PostPage.getInitialProps = async ({ query }) => {
const post = await getPostBySlug(query.slug);
return { post };
};
和我的 _error.js 页面:
function Error({ statusCode }) {
return (
<p>
{statusCode
? `An error ${statusCode} occurred on server`
: "An error occurred on client"}
</p>
);
}
Error.getInitialProps = ({ res, err }) => {
const statusCode = res ? res.statusCode : err ? err.statusCode : 404;
return { statusCode };
};
解决方案
不返回 {post},而是返回 post.data。它将解决问题。
推荐阅读
- c - nanosleep() 等待至少 15 毫秒?
- angular - 如何在一个数组中结合两个基于 ID 的 observables?
- datatable - 从 pdf 导出中的数据表标题中删除选择选项
- python - 如何将列表混合列表中的数字字符串转换为int(Python)
- java - 无法获取 getter 的值
- python - 您如何在 Flask 中发送滑块值的发布请求?
- python - Apache2上的Django - 进行更改时重新启动服务器?
- python - 如何使用 Django 中的确认码更新电子邮件地址?
- python-3.x - 如何在小端打包十六进制后删除 b 或字节对象前缀?
- firebase - 使用多个 where 子句查询 firestore