1

我正在从 cms 获取页面数据,到目前为止,我的页面/帖子中只有一页。


pages/posts/[slug].js

import { getAllPostsWithSlug, getPostAndMorePosts } from '../../lib/api';

export default function Post({ post }) {
  const router = useRouter();
  const { slug } = router.query;
  return (
    <div>
      <p>
        title: {typeof post == 'undefined' ? 'no post' : post.title}
      </p>
    </div>
  );
}

export async function getStaticProps({ params, preview = null }) {
  const data = await getPostAndMorePosts(params.slug, preview);
  const content = await markdownToHtml(data?.posts[0]?.content || '');

  return {
    props: {
      preview,
      post: {
        ...data?.posts[0],
        content,
      },
      morePosts: data?.morePosts,
    },
  };
}

export async function getStaticPaths() {
  const allPosts = await getAllPostsWithSlug();
  return {
    paths: allPosts?.map((post) => `/posts/${post.slug}`) || [],
    fallback: true,
  };
}

这将正确显示 post.title,但如果我直接使用

<p>title: {post.title}</p>

我收到构建错误: 发布未定义

下一步是否尝试在没有数据的情况下使用模板构建页面?当构建成功时,我在 /posts 中只有一条路线。

4

0 回答 0