我有一个使用 getStaticProps + getStaticPaths 从无头 WP 生成页面的博客 - 一切都很好。然后我有一个连接到数据库的组件,允许我链接到任何单个类别中的任何下一个帖子。然后在 ...postSlug 页面中使用该组件。
因此,如果我切换到使用 getServerSideProps 发布帖子,基本上该组件可以完美运行,因为它会在每个帖子被请求并在服务器上构建时更新“上一个”+“下一个”URL。但是,如果我使用 getStaticProps,除非我手动刷新页面,否则组件不会使用正确的 URL 进行更新。所以我需要在组件中使用一些客户端数据获取,使用 useState、useEffect 或 SWR 或其他东西 - 但我不确定最好的方法(或者即使这可行或者我是否应该使用gServerSideProps)。
任何帮助将不胜感激。谢谢!为清楚起见,以下组件已编辑...
export default function MovePost() {
const { usePost } = client
const post = usePost()
const { query = {} } = useRouter()
const { categorySlug } = query
const currentPaginationCursor = btoa( `arrayconnection:${post.databaseId}` )
const { posts } = client.useQuery()
const previous = posts({
first: 1,
before: currentPaginationCursor,
where: { categoryName: `${categorySlug}` },
}).nodes[0]?.slug
return (
<>
{ previous &&
<Link href={`/archive/${categorySlug}/${previous}`}>
<a ...
export default function Page() {
const { usePost } = client
const post = usePost()
return (
<>
<Layout>
<div dangerouslySetInnerHTML={{ __html: post?.content() ?? '' }} />
<MovePost />
</Layout>
</>
)
}
export async function getStaticProps(context: GetStaticPropsContext) {
return getNextStaticProps(context, {
Page,
client,
notFound: await is404(context, { client }),
})
}
export function getStaticPaths() {
return {
paths: [],
fallback: 'blocking',
}
}