javascript - 如何在不更改页面刷新的情况下将参数 url 重写为 NextJS 中的目录?
问题描述
好的,所以它可能很简单,但我无法弄清楚。
每当我在 url 中输入 /login 时,我只想留在主页上,而不是重定向到 /pages/login(目前为 404)。我还需要将其保留为 GET 参数来切换我的 LoginModal。
import Link from 'next/link'
// components/Header.js
<Link href="/?login" as="/login">
<LoginButton />
</Link>
// components/Auth.js
const Auth = () => {
const router = useRouter()
return (
<>
{ 'login' in router.query && <LoginModal />}
{ 'register' in router.query && <RegisterModal />}
</>
)
}
// pages/index.js
const Index = () => {
return (
<>
<Header />
<HomePage />
<Auth />
</>
)
}
// pages/login.js doesn't exist
谢谢!
解决方案
这已在 NextJS 更新 9.5 中通过 Rewrite https://nextjs.org/docs/api-reference/next.config.js/rewrites解决
// nextjs.config.js
module.exports = {
async rewrites() {
return [
{
source: '/login',
destination: '/?login',
},
{
source: '/register',
destination: '/?register',
},
]
},
}
它就像那样完美地工作。
推荐阅读
- c# - Win32::OLE 与 C# DLL 和返回的对象
- java - DSpace 最近站点提交返回 0 个项目,而最近社区提交集合工作正常
- r - 我们可以使用 uniroot() 而不是 optimize() 在 R 中进行这种最小化吗?
- java - 连接到 Localhost MySQL 数据库的问题
- ms-word - Ms-Word 邮件合并格式
- vba - vba 逻辑运算符分组
- javascript - 选择表格单元格作为组
- c# - C# 中的 Foo().Result 和 Task.Run(() => Foo()).Result 有什么区别?
- javascript - Webpack 错误,加载块失败
- python - 如何通过 Paramiko 获取目录中所有 SFTP 文件的大小