当用户尝试未经身份验证访问应用程序的仪表板时,我试图将其重定向到主页,但Route.push()无法正常工作。
我试图将Router.push('/')更改为Router.push('/ hey')->一个不存在的页面,并且此方法起作用了,更改了路由。另外,当我尝试访问类似Router.push('/ auth / signin')的路径时,当Router.push('/ auth')起作用时,它不起作用
get_descriptive_name
答案 0 :(得分:1)
我遇到了同样的问题,但找到了解决方法,但没有解决方案。我使用window.location
//keep your base urls in a global variables file
import { devUri, productionUri } from "../globalVariables";
push = (route = "") => {
const uri = process.env.NODE_ENV === "production" ? productionUri : devUri;
window.location = uri + '/' + route
}
push("/auth/signup")
push("/path/to/whatever/route/you/like")
push() //navigates to your base uri
}
您可以将该函数保存到您的globalVariables.js
版本中,然后根据需要进行导入(与从第三方模块导入其他函数的方式大致相同)
import { devUri, productionUri, push } from "../globalVariables";
顺便说一句,我遇到了与您完全相同的问题:Router.push(“ /”)或存在的任何其他地址似乎根本没有触发,Router.push(“ / unexistentlocation”)正常工作
答案 1 :(得分:0)
您似乎在使用next-router依赖吗?
尝试使用next/router
(nextjs的默认依赖项),它在我的代码中工作正常:
import Router from "next/router";
{ other code... }
Router.push("/auth/signup");