javascript - 在 NextJs 中动态创建主页
问题描述
我正在尝试使用 NextJs 和获取数据时获得的 slugs/uri 创建我的所有页面,但是在尝试创建它说的主页时。
Error: The provided path `/` does not match the page: `/[slug]`.
[slug].tsx 位于页面文件夹中。我删除了 index.js,因为我希望主页与其他页面具有相同的页面布局。
目前正在获取这样的静态路径:
export async function getStaticPaths() {
const allPages = await getAllPostsWithSlug();
return {
paths: allPages.edges.map(({ node }) => `${node.uri}`) || [],
fallback: true,
};
}
我得到的错误是有道理的,但我真的找不到在同一页面模板中创建主页的解决方案。
解决方案
根据文档,您可以使用可选的包罗万象的路线。
命名您的页面文件[[...slug]].js
,然后使用类似这样的内容作为paths
道具getStaticPaths
:
paths: [
{ params: { slug: [] } },
{ params: { slug: ['foo'] } },
{ params: { slug: ['bar'] } },
]
FWIW - 如果您想共享主模板中的组件(即页眉、导航、页脚等),我建议使用自定义_app.js
页面。如果您的主页确实与您的其他页面相同,则可能值得重新访问该设计!
祝你好运!
推荐阅读
- asp.net - ASP.Net Razor 页面生成错误的 URL
- java - 如何让 stdlib.jar 在 Intellij 中工作?
- perl - perl 和 sed 中的相同正则表达式的工作方式不同
- android - 如何为小于O的android创建通知通道
- prolog - 我们如何在prolog中做一个循环?
- html - Asp.net Core 根据模型值在特定位置动态插入 HTML 元素
- node.js - 静态服务 nuxt 应用程序时代理模块不起作用
- node.js - Promise 和 Async 函数的问题
- c++ - 如何打印输入值
- android - CalendarPickerView 无法在 Firebase 内部初始化获取调用