Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

228
Visualizações
Force Navigate To Login Screen on Refresh React Router Dom

I got a use case wherein the customer must go to the login screen on Browser refresh. example:

import "./styles.css";
import {
  Route,
  Routes,
  BrowserRouter as Router,
  Outlet,
  Link
} from "react-router-dom";
import { useEffect, useLayoutEffect,StrictMode } from "react";
import { createRoot } from "react-dom/client";


root.render(
  <StrictMode>
    <App />
  </StrictMode>
);

export default function App() {
  return <Main />;
}

const Main = () => {
  return (
    <Router>
      <Routes>
        <Route path="/" element={<LayoutMain />}>
          <Route path="/" element={<div>Home</div>} />
          <Route path="/login" element={<div>Login</div>} />
          <Route path="/register" element={<div>Regster</div>} />
        </Route>
        <Route path="/inner" element={<InnerLayout />}>
          <Route path="/inner/" element={<div>Home Inner</div>} />
          <Route path="/inner/login" element={<div>LoginInner</div>} />
          <Route path="/inner/register" element={<div>RegsterInner</div>} />
        </Route>
      </Routes>
    </Router>
  );
};

const LayoutMain = () => {
  return (
    <div>
      Main Header
      <Link to="">Home</Link>
      <Link to="login">Login</Link>
      <Link to="register">Register</Link>
      <Link to="inner">inner</Link>
      <div>
        <Outlet />
      </div>
    </div>
  );
};

const InnerLayout = () => {
  useEffect(() => {
    console.log(1);
  }, []);
  return (
    <div>
      Inner Header
      <Link to="">HomeI </Link>
      <Link to="/inner/login">LoginI </Link>
      <Link to="/inner/register">RegisterI </Link>
      <div>
        <Outlet />
      </div>
    </div>
  );
};

If I try to refresh it goes to the proper route but I don't want this behavior it should go to the login screen on refresh.

How to achieve it using react router dom v6

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

I suggest moving the Router up the ReactTree and use a mounting useEffect hook to issue an imperative redirect when the App component mounts.

Example:

import "./styles.css";
import {
  Route,
  Routes,
  BrowserRouter as Router,
  Outlet,
  Link,
  useNavigate,
} from "react-router-dom";
import { useEffect, useLayoutEffect, StrictMode } from "react";
import { createRoot } from "react-dom/client";

root.render(
  <StrictMode>
    <Router>
      <App />
    </Router>
  </StrictMode>
);

...

export default function App() {
  const navigate = useNavigate();

  useEffect(() => {
    navigate("/login", { replace: true });
  }, []);

  return <Main />;
}

...

const Main = () => {
  return (
    <Routes>
      <Route path="/" element={<LayoutMain />}>
        <Route path="/" element={<div>Home</div>} />
        <Route path="/login" element={<div>Login</div>} />
        <Route path="/register" element={<div>Regster</div>} />
      </Route>
      <Route path="/inner" element={<InnerLayout />}>
        <Route path="/inner/" element={<div>Home Inner</div>} />
        <Route path="/inner/login" element={<div>LoginInner</div>} />
        <Route path="/inner/register" element={<div>RegsterInner</div>} />
      </Route>
    </Routes>
  );
};
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda