reactjs - 具有多个参数的 Gatsby 客户端路由
问题描述
用户可以拥有自己的个人资料页面,就像 Twitter 等一样,并且可以通过http://example.com/username访问。因为有成千上万的用户,我正在动态处理这个问题,并在我的onCreatePage
:
if (page.path.match(/^\/user\/$/)) {
createPage({
...page,
matchPath: '/:identifier'
})
}
它按预期工作。
但是用户也可以有“子页面”,它们也是动态的,并且应该只是客户端,即http://example.com/username/somepage。somepage
在这里只是一个占位符,但它引用了一个asset
可能有数千个的 ID。所以我希望这样的事情能够奏效:
if (page.path.match(/^\/asset\/$/)) {
createPage({
...page,
matchPath: '/:identifier/:slug'
})
}
但事实并非如此。它路由到 404 页面。我也试过了/:identifier/*
。
我怎样才能做到这一点?
解决方案
createPage
Gatsby 处理了创建页面(
if (page.path.match(/^\/user\/$/)) {
createPage({
...page,
matchPath: '/:identifier/*'
})
}
其余的 URL 参数可以由路由器处理,例如:
<Router>
<User path="/user/:identifier" />
<UserAsset path="/user/:identifier/:asset" />
</Router>
推荐阅读
- javascript - 调用异步函数 main 的正确方法?
- ethereum - 功能的气体估计:无限
- tfs - 如何将测试计划(或测试用例)从一个 VSTS 迁移到另一个 VSTS?
- node.js - 运行 NPM 给出 SyntaxError: Unexpected Identifier
- java - Why is reading a JDBC ResultSet by position faster than by name and how much faster?
- r - Error in Running R Shiny App: Operation not allowed without an active reactive context
- react-native - 如何基于倒数计时器加速动画?
- c# - How to split an image based on transparent areas
- samba - Why an samba admin user cannot login
- rest - Postman setNextRequest 和工作流条件工作流