4

我对 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”仍然存在并且我仍然可以进入该页面。 在此处输入图像描述

重新验证后不应该删除吗?

4

0 回答 0