【问题标题】:Nextjs setting all route paths dynamicallyNextjs 动态设置所有路由路径
【发布时间】:2021-04-15 00:55:52
【问题描述】:

在工作中,

我们有一个像这样的文件夹路径:

pages/user/login.js

我们想把它移到 http://example.com/login

但链接标签和文件夹结构应该保持不变。 我们应该还在使用

<Link href="/user/login">

但它应该显示为http://example.com/login。 这应该在没有任何文件夹结构更改的情况下完成! 我们无法替换href,也无法将user.js 移动到根目录。

我的同事是 nextjs 的新手,他们拒绝在没有此功能的情况下切换。 (CTRL+SHIFT+H(全部替换)太费时间了,所以我们花了 8x3 小时来解决这个问题)

我们尝试过 next.config redirectsrewrites 无济于事。

   module.exports = {
      async rewrites() {
        return [
          {
            source: "/login",
            destination: "/user/login",
          },
          {
            source: "/register",
            destination: "/user/register",
          },
        ];
      },
    };
    // not working: <Link href="login"/>

【问题讨论】:

标签: reactjs next.js


【解决方案1】:

rewrites 仅用于服务器,不影响客户端路由。

要为您的客户端路由提供相同的逻辑,您可以将 as 属性添加到您的 Links,这是地址栏中将显示的路径的装饰器。

<Link href="/user/login" as="/login" />

【讨论】:

  • 嗯,这就是我的建议。我的同事坚持认为,如果我们需要更新,他们不应该在所有项目上更新“/login”
  • 恐怕在不改变任何文件夹结构的情况下,这是最简单的解决方案。
  • 是的,这是另一种可能的方式,不需要更改Link。您应该将其添加为答案。
  • 谢谢。同事坚持从静态文件中导入 url,这是一个好方法吗?就像 import {loginUrl} from "constants/urls"
猜你喜欢
  • 1970-01-01
  • 2021-04-01
  • 1970-01-01
  • 2020-09-08
  • 2021-08-12
  • 2020-08-25
  • 1970-01-01
  • 1970-01-01
  • 2021-11-25
相关资源
最近更新 更多