我尝试将 URL 重定向到 remix.run 中的自定义 404 页面,但无法执行此操作。我有一个类似这样的 url 结构 -
app/
├── routes/
│ ├── $dynamicfolder/
│ │ ├── index.tsx
│ │ ├── somepage.tsx
│ │ ├── $.tsx
│ └── index.tsx
└── root.tsx
我在
$dynamicfolder
下有一定数量的页面,可以像这样访问它们 -
"https://example.com/xx/" (This is to access the index.tsx, I have 2 fixed values that are
passed in "$dynamicfolder", let's say xx and xy),
"https://example.com/xx/somepage" (This is to access the other page)
当传入一些其他随机值时
$dynamicfolder
,我们说“yy”,就像这样 -
"https://example.com/yy/"
然后我希望由也在
$.tsx
内部的 $dynamicfolder
处理。不幸的是,这并没有发生,并且抛出了一个明显的错误。
我正在使用
$dynamicfolder
钩子访问 $dynamicfolder/index.tsx
中 useParams()
的值。我只想在传递除 xx
和 xy
之外的任何其他值时将页面重定向到 404。
我确实遵循了混音文档,Splat URLs和动态路由参数,但也许我犯了某种我无法发现的错误。
也有可能我的做法是错误的,因为我是 remix.run 的新手。任何帮助将不胜感激。谢谢。
在加载程序中,根据需要检查参数和
throw new Response("Not found", { status: 404 })
。抛出响应将呈现最接近的 <CatchBoundary>
在您的 root 路由中,导出
<CatchBoundary>
以显示您的自定义 404 错误。
https://remix.run/docs/en/v1/guides/not-found#root-catch-boundary