我的react应用程序已集成到已经存在的Maven项目中,并且需要具有/my
的子目录。
因此,所有Route
都必须具有basename
中的/my/~~~
。但是,有一条不需要子目录的路由,如果应用了该路由,则击中该路由会导致无限循环。
特定路线为/logout
。因此,点击/my/logout
会导致无限循环。
项目中只有一个引用链接到logout
路线,而一个Link
<Link to={"/logout"}>Logout</Link>
下面是我的App.js
和我的<Router>
const App = () => {
return (
<div className="App">
<Router basename="/my/">
<Switch>
<Route path="/login" component={Login} />
<Route exact path={"/"} component={Login} />
<Route path="/forgotpassword" component={ForgotPassword} />
<Route
path="/website-user/reset-password/:token/:userId"
component={ResetPassword}
/>
<Route
path="/complete-registration/:token/:userId"
component={FinishRegistration}
/>
<Route path={"/register"} component={Login} />
<Route
path="/register?email=:email&telephone=:telephone"
component={Login}
/>
<Route path={"/"} component={SubNav} />
</Switch>
<Route path={"/overview"} component={Overview} />
<Route path={"/favourites"} component={Favourites} />
{/* How to get LogoutComponent to go to /logout instead of /my/logout */}
<Route path={"/logout"} component={Logout} />
</Router>
</div>
);
};
那么是否有可能将所有<Route>
转到/my/~~~
,但注销才能转到/logout
?
任何帮助将不胜感激。
答案 0 :(得分:2)
否。您不能这样做。
页面上不应有多个BrowserRouters
。
无论如何,它都不会起作用,因为它正在与最近的Router祖先通话。包装完另一个路由器后,您将创建一个新的历史记录实例,从而创建了路由和链接的整个子集。
一种解决方法是,不要为route
创建logout
,而是在与{{ 1}}按钮。