reactjs - Next.js 动态路由添加到现有路径
问题描述
在我使用 Strapi CMS 的 Next.js 博客中,我尝试根据帖子的类别对帖子进行排序。我为类别 [id].js 创建了一个动态路由。它使用 getStaticPaths 像这样:
export async function getStaticPaths() {
const categories = await getCategories()
return {
paths: categories.map((category) => `/categories/${category.id}`) || [],
fallback: false,
}
我正在使用下拉列表来过滤类别。例如,如果我选择类别 1,则路径是这样的 http://localhost:3000/categories/1。到这里就好了。
但是下拉菜单仍然呈现在页面上,当我选择类别 2 时。现在,路径是 http://localhost:3000/categories/categories/2 这当然会导致 404 错误。
预期的结果是 http://localhost:3000/categories/2
我用于下拉元素的下一个/链接组件如下所示:
<Link href="/categories/[id]" as={`/categories/${category.id}`}>
<a>{category.name}</a>
</Link>
我知道我犯了一些错误,但无法弄清楚它是什么。
但是,我有一个用于帖子的 [slug].js,它也会呈现更多帖子。无需为路径添加额外的 /posts 即可路由到正确的帖子。但它不适用于类别。请帮忙。
解决方案
它应该id
只返回。
export async function getStaticPaths() {
const categories = await getCategories()
const paths = categories.map((category) => ({
params: { id: category.id.toString() },
}))
return {
paths,
fallback: false,
}
}
推荐阅读
- python - 如何在列的所有值中只允许点后的 4 个值?
- javascript - 将下拉菜单从 Material UI 转换为 Bootstrap
- django - 在heroku上运行应用程序时没有名为“app.settings”的模块错误
- javascript - 用 Jquery 替换 d3.select 和 onchange 函数
- c++ - 如何用 Qt 和 C++ 解析这个 JSON?
- laravel - 使用 '1' 而不是 user_id 作为 belongsTo 的第二个参数
- string - Bash 在不扩展转义空格的情况下执行字符串作为命令
- python - 如何编写掷骰子游戏项目。这是我的第一个项目
- android - 在 Android Studio 中使用 OkHttp 在同一会话中的 POST 请求后发出 GET 请求
- azure-service-fabric - 在 Service Fabric AD 应用上分配服务主体管理员角色