问题描述
我对 ISR 有点问题。我有 revalidate prop 等于 1s 就像这里
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 中删除产品时,产品页面中的产品列表会更新并且产品消失,但我仍然可以进入该产品的页面。此外,当我重命名产品名称时,产品列表会更新,但我仍然可以输入较早的页面名称。
有没有办法解决这个问题?
getStaticPaths
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”时仍然存在,我仍然可以进入该页面。
重新验证后不应该删除吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)