如何使用 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,
};
}
[Next.js] 使用 Headless CMS WordPress 和插件 [WPGraphQL], 我能够通过调用 getStaticPaths 中的 API 创建类别列表。
src
--pages
----category
------[slug.tsx]
--------page
----------[pageNo.tsx]
在[slug].tsx
中描述了以下getStaticPathsexport 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,
};
}