Gatsby 客户端路由是否需要方括号?

Do Gatsby client-side routes require square brackets?

我正在向现有网站添加客户端路由。我即将结束该项目,我注意到 Gatsby 文档说您需要将客户端路由放在 files/folders 中,并在其名称周围加上方括号(例如:parentpath/[somepathprop].js)。我没有在我的任何客户端路由文件中使用该格式,但一切正常。为什么 Gatsby 推荐方括号?

我正在使用 gatsby-plugin-create-client-paths 插件。

像这样的 pages/users/index.js 文件有什么问题?

Gatsby 建议在构建时 Gatsby 有一些未知参数的情况下使用括号表示法 ([]),例如作为页面 slug 一部分的标识符 (/user/:id) ,就像您的情况一样,以避免未知字段的代码破坏或错误重定向。例如:src/pages/users/[id].js 将生成类似 /users/:id.

的路由

在您的情况下,由于您使用的是 gatsby-plugin-create-client-paths 插件,因此您允许 Gatsby 在 /user 路径下生成页面,该路径仅存在于客户端中。

What's the issue with a pages/users/index.js file like this?

正如我所说,在您的用例中,您的方法可能有效,但请记住,如果您需要生成类似 /user/123456789 的路径,项目可能会中断,因为它是系统中的未知路径。这就是为什么平方符号在这种情况下对您有帮助。

说的是,请在 gatsby developgatsby build 中仔细测试您的项目,以确保一切都按预期工作。

Do Gatsby client-side routes require square brackets?

这取决于每个案例,但理想情况下,是的。使用此表示法的主要目的是避免未知字段的错误行为(错误的重定向或潜在的编译问题),尤其是当它们是 URL.

的一部分时