gpt4 book ai didi

javascript - 除了一个路由之外,所有路由都使用 basename 子目录吗?

转载 作者:行者123 更新时间:2023-11-29 20:35:19 27 4
gpt4 key购买 nike

我的 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

如有任何帮助,我们将不胜感激。

最佳答案

不可以。你不能这样做。

页面上不应有多个 BrowserRouter

无论如何这都行不通,因为它正在与最近的 Router 祖先对话。一旦你包装了另一个 Router,你就创建了一个新的历史实例,因此创建了一个完整的路由和链接子集。

只是一个解决方法是,不要为 logout 创建 route,而是使用 onClick 处理你的 logout 功能> 在具有 logout 按钮的同一组件中运行。

关于javascript - 除了一个路由之外,所有路由都使用 basename 子目录吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56887623/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com