'React Router Dom doesn't redirect me after signing in

I'm creating a basic login page right now and I'm new to react. So far the page redirects me successfully to the '/login' page since I'm not logged in. After I log in I get a console.log of 'Logged in as guest' which is what I want for now, however, I don't get redirected to the home page. Can someone help me with this?

The relevant code is after the return call but I left it all there for context

Many thanks!

import Intro from './components/Intro';
import SignIn from './components/SignIn';
import Home from './components/Home';
import { BrowserRouter as Router, Route, Routes, Navigate, useParams, useNavigate } from 'react-router-dom';
import './App.css';
import { useState, useEffect } from 'react';


function App() {

  const guestUser = {
    username: "guest",
    password: "guest",
  }

  const [user, setUser] = useState({username: "", password: ""})
  const [error, setError] = useState("");

  
  

  const Login = details => {
      console.log(details);
      if(details.username == guestUser.username && details.password == guestUser.password) {
        console.log("Logged in as guest");
        setUser({
          username: details.username,
          
        });
        
        
      } else {
        console.log("details do not match");
        setError("Details do not match.")

      }
  }

  const Logout = () => {
      console.log("logout");
  }



  return (

    <div className="App">
      
      <Router>
        <Routes>
          
          <Route path="/Login" element={<Intro Login={Login} Logout={Logout} error={error}/>} />
          <Route path="/Home" element={<Home user={user}/>}/>
          <Route path="" 
            element={user.username !== "" ? <Navigate to ="/Home" /> :
            <Navigate to ="/Login"/>}/>
          
          
          
      
      
          
        </Routes>

      </Router>
        
    </div>
     
 
    
  );
}

export default App;



Solution 1:[1]

In your login function, after successful login you are not navigating to your home page...

import Intro from './components/Intro';
import SignIn from './components/SignIn';
import Home from './components/Home';
import { BrowserRouter as Router, Route, Routes, Navigate, useParams, useNavigate } from 'react-router-dom';
import './App.css';
import { useState, useEffect } from 'react';

function App() {

  const guestUser = {
    username: "guest",
    password: "guest",
  }

  const [user, setUser] = useState({username: "", password: ""})
  const [error, setError] = useState("");

  const Login = details => {
      console.log(details);
      if(details.username == guestUser.username && details.password == guestUser.password) {
        console.log("Logged in as guest");
        setUser({
          username: details.username,
          
        });
 <Navigate to ="/Home"/>}/>
                
      } else {
        console.log("details do not match");
        setError("Details do not match.")

      }
  }
  const Logout = () => {
      console.log("logout");
  }
  return (
    <div className="App"> 
      <Router>
        <Routes>
          <Route path="/Login" element={<Intro Login={Login} Logout={Logout} error={error}/>} />
          <Route path="/Home" element={<Home user={user}/>}/>
          <Route path="" 
            element={user.username !== "" ? <Navigate to ="/Home" /> :
            <Navigate to ="/Login"/>}/>  
        </Routes>

      </Router>
        
    </div>
  );
}
export default App;

This will work

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 awesome webber