gpt4 book ai didi

javascript - NextJS 中的静态分页

转载 作者:行者123 更新时间:2023-12-03 18:43:56 25 4
gpt4 key购买 nike

我正在尝试在 Next JS 中设置分页,但我无法弄清楚如何通过 getStaticProps 实现这一点。我可以通过带有查询参数的 getServerSideProps 来做到这一点,但这不能通过 getStaticProps 访问。数据来自本地 Strapi 后端。
这是 getServerSideProps 的示例(有效):

export async function getServerSideProps({ query: { page = 1 } }) {
const { API_URL } = process.env;

const start = +page === 1 ? 0 : (+page - 1) * 3;
const numberOfCakesRes = await fetch(`${API_URL}/cakes/count`);
const numberofCakes = await numberOfCakesRes.json();

const res = await fetch(`${API_URL}/cakes?_limit=3&_start=${start}`);
const data = await res.json();

return {
props: {
cakes: data,
page: +page,
numberofCakes,
},
};
}
然后我只需将按钮连接到路由器即可来回切换。
onClick={() => router.push(`/?page=${page - 1}`)}
我需要访问类似于 getServerSideProps 中的查询参数的东西。
我要求的是静态实现吗?

最佳答案

Because getStaticProps runs at build time, it does not receive datathat’s only available during request time, such as query parametersor HTTP headers as it generates static HTML.docs


您可以做的一件事是不要将页码放在查询中,而是将其作为路由参数,即用户将访问 /3而不是 /?page=3 .
要实现它,您需要创建一个 [page].jspages目录并导出 getStaticPaths功能:
export async function getStaticPaths() {
// query Strapi to calculate the total page number
return {
paths: [
{ params: { page: '1' } },
{ params: { page: '2' } },
{ params: { page: '3' } }
],
fallback: true or false // See the "fallback" section in docs
};
}
还有一个 getStaticProps功能:
export async function getStaticProps(context) {
const { page } = context.params;
// fetch page data
return {
props: { ... },
}
}
了解更多关于 getStaticPathsgetStaticProps在 Next.js docs .

关于javascript - NextJS 中的静态分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62628685/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com