Все ли маршруты используют подкаталог basename, кроме одного Route? - PullRequest
1 голос
/ 04 июля 2019

Мое приложение реагирования интегрируется в уже существующий проект Maven и должно иметь подкаталог /my.

Таким образом, все Route должны иметь basename из /my/~~~. Однако есть один маршрут, который не требует подкаталога, и при его применении попадание в этот маршрут вызывает бесконечный цикл.

Конкретный маршрут - /logout. Таким образом, нажатие /my/logout вызывает бесконечный цикл.

В проекте есть только одна ссылка, которая связана с logout Route и которая 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 для перехода к /logout?

Любая помощь будет принята с благодарностью.

1 Ответ

2 голосов
/ 04 июля 2019

Нет. Вы не можете сделать это.

Вы не должны иметь несколько BrowserRouters на странице.

Это не сработает, так как разговаривает с ближайшим предком Маршрутизатора. После того, как вы завернули другой маршрутизатор, вы создали новый экземпляр истории и, следовательно, целый набор маршрутов и ссылок.

Это просто обходной путь, не создавайте route для logout, вместо этого обрабатывайте свои функции logout, используя функцию onClick в том же компоненте, где у вас есть кнопка logout.

...