微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

NEXT.js ISR 移除静态页面

如何解决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 举报,一经查实,本站将立刻删除。