NextJs中的复杂路由



我试图在NextJs应用程序中创建描述性路由,但是我正在与NextJs基于文件的路由系统作斗争。web中的预期路由是:(/posts/id/mail);我如何在项目中做到这一点:

Posts
- index.js
- [id]
- mail.js

正如你所看到的,我没有index.js在我的[id]文件夹,因此每当有人决定去/posts/id没有'/mail',它将是404。所以基本上我的问题是:我如何把mail.js变成index.js,并使URL保持不变(/mail在最后)。

如果没有办法用nextjs原生地做到这一点,我也很感激,如果你告诉我。

catch all

这可能不是您喜欢的方式,但是您可以使用捕获所有路由将[id]mail.js一起处理在一个文件中。

。如果您有一个文件[...post].jsx,并将路由称为/someid/mail/someid,那么params.post将是一个像[ 'someid', 'mail' ][ 'someid' ]一样的数组。

重定向除此之外,我也没有找到任何方法让文件夹成为没有索引文件(或任何其他文件)的路由,特别是对于像www.example.com/这样的路由(即没有/index附加到它)。我用了一些"不需要的"方法解决了这个问题。路径/main,然后重定向到/

作为备注:

我发现特定的路由/index在某些情况下会导致错误,这就是为什么我选择了/main

我记不清了,它可能取决于你是否想要两个路由('/index'和'/')是有效的,并指向同一个文件(并在地址栏中保持可见),或者如果只有其中一个应该是有效的,重定向到另一个。同样,在这种情况下,我的路径来自getStaticPaths,而不是来自文件。

最新更新