我们在/app
文件夹中有一个动态页面:/app/[...slug]
。
我们正在生成一堆静态URL。在组件内部有一个检查,如果这样的URL存在。如果没有,notFound
函数被触发。
if (!databaseId) notFound();
它工作得很好,如果后端没有这样的页面,那么not-found.tsx
的组件就会呈现出来。好吧,当我们使用export const dynamicParams = false;
时,它工作得很好,所以如果没有找到路径,就没有SSR检查。但如果没有这一点,SSR检查将被触发,而notFound
函数仍然从not-found.tsx
呈现组件,但Chrome中网络选项卡中返回的页面状态为200。为什么会这样?如果notFound
在这种情况下在后端被触发,那么它不应该自动向响应添加一个404状态吗?或者我们在这过程中沿着遗漏了什么?
1条答案
按热度按时间piwo6bdm1#
好吧,回答我自己的问题-这篇评论帮助了我:https://github.com/vercel/next.js/issues/51021#issuecomment-1645492229。
我使用的是即时加载状态(加载.tsx文件与页面.tsx处于同一级别)。我不知 prop 体细节,但它确实有意义,因为加载出现在其他任何东西之前,所以服务器需要发送一些状态代码。