我对 ISR 有一点问题。我有 revalidate 道具等于 1 像这里
export async function getStaticProps({ params }) {
const data = await client.getEntries({
content_type: "product",
"fields.name": params.slug,
});
if (!data.items[0]) {
return {
notFound: true,
};
}
return {
props: {
article: data.items[0],
revalidate: 1,
},
};
}
当我在 Contentful 中创建产品时,页面按预期创建。当我想进入不存在的页面时,我得到了预期的 404 错误。当我在现有产品的 Contentful 中更改某些内容或删除它时,问题就开始了。
当我在 Contentful 中删除产品时,产品页面中的产品列表会更新并且产品会消失,但我仍然可以进入该产品的页面。此外,当我重命名产品名称时,产品列表会更新,但我仍然可以进入较早的页面名称。
有什么办法可以解决这个问题吗?
获取静态路径
export async function getStaticPaths() {
const data = await client.getEntries({
content_type: "product",
});
return {
paths: data.items.map((item) => ({
params: { slug: item.fields.name },
})),
fallback: true,
};
}
产品页面
const Article = ({ article }) => {
const router = useRouter();
if (router.isFallback) return <p>Loading...</p>;
return (
<div>
<h1>Hello! {article.fields.name}</h1>
<Link href="/about">
<a>Back to about!</a>
</Link>
</div>
);
};
编辑 当我在我的 product77 构建中重新验证静态页面后,我在 Contentful 中将产品名称从“product77”更改为“product7”仍然存在并且我仍然可以进入该页面。
重新验证后不应该删除吗?