NEXT.js ISR 移除静态页面

问题描述

我对 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”时仍然存在,我仍然可以进入该页面

enter image description here

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

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)