如何使用 getStaticPaths 在类别中使用嵌套的 getStaticPaths 创建 post 文件? (使用 API)

How to make a post file using nested getStaticPaths in a category using getStaticPaths? (Using API)

[Next.js] 使用 Headless CMS WordPress 和插件 [WPGraphQL], 我能够通过调用 getStaticPaths 中的 API 创建类别列表。

src
--pages
----category
------[slug.tsx] 
--------page
----------[pageNo.tsx]

在[slug].tsx

中描述了以下getStaticPaths
export async function getStaticPaths () {
  const allPosts = await GET_ALL_CATEGORIRS_SLUG ();
  return {
    paths: paths:
      allPosts.edges.map (({node}) => `/category/${node.slug}`) ||
      [],
    fallback: true,
  };
}

以下getStaticPaths在[pageNo].tsx中有描述

export async function getStaticPaths() {
  const totalCount = await GET_TOTAL_POST_COUNT(currentCategorySlug);
  const totalPostsCount = totalCount.pageInfo.offsetPagination.total ?? 0;

  const pagesCount = Math.ceil(
    (totalPostsCount - PER_PAGE_FIRST) / PER_PAGE_REST + 1
  );

  const paths = new Array(pagesCount).fill("").map((_, index) => ({
    params: {
      pageNo: (index + 1).toString(),
    },
  }));

  return {
    paths: [...paths],
    fallback: true,
  };
}

但是,除非 currentCategorySlug 明确,否则这不起作用。

如何获取当前父类别?

我不能在这里使用 useRouter,所以如果有办法获取 currentCategorySlug 或其他东西,请告诉我。 或者你在什么地方使用 useRouter?

代码有点粗糙,但我已经解决了,所以我会描述它。

export async function getStaticPaths() {
  const allCategoryAndPosts = await GET_ALL_CATEGORY_AND_POSTS();
  var paths = new Array();
  allCategoryAndPosts.edges.map(({ node }) => {
    const totalPostsCount = node.posts.pageInfo.offsetPagination.total ?? 0;
    const pagesCount = Math.ceil(
      (totalPostsCount - PER_PAGE_FIRST) / PER_PAGE_REST + 1
    );
    for (let index = 1; index <= pagesCount; index++) {
      paths.push(`/category/${node.slug}/page/${index}` || []);
    }
  });

  return {
    paths: [...paths],
    fallback: true,
  };
}