【发布时间】:2021-05-20 03:16:08
【问题描述】:
我的目标是在使用 Gatsby (v2) 和 @reach/router 时以最佳模式启用以下类型的静态和动态路径。我遇到的问题是 Gatsby 文档设置您在每个动态路由上添加路径 /app 前缀,这不适合我的用例。
所需路径:
-
/:生成静态路由和构建时间 -
/about:生成静态路由和构建时间 -
/:username:动态路由和运行时生成 -
/:username/:postTitleSlug:动态路由和运行时生成
按照 Gatsby 文档,我有这个文件夹结构:
/pages
index.jsx
about.jsx
app.jsx
/templates
profile.jsx // for the /:username path
post.jsx // for the /:username/:postTitleSlug path
app.jsx
const Routes = () => (
<Router>
<Profile path="/:username" />
<Read path="/:username/:slug" />
</Router>
);
gatsby-node.js
exports.onCreatePage = async ({ page, actions }) => {
const { createPage } = actions;
if (page.path.match(/^\/app/)) {
await createPage({
path: 'app',
matchPath: '/app/*',
component: path.resolve('src/templates/Profile/index.js'),
});
}
};
是否可以展开“应用程序”命名法并在基本路径/ 之外键入一些动态路由?
FWIW,我第一次尝试的修复是让pages/index.jsx 只是一个路由器,类似于this post。这似乎是一个潜在的解决方案,但我不清楚gatsby-node.js 所需的更新。
【问题讨论】:
标签: node.js reactjs gatsby reach-router