I want to open the page up and if I'm not signed in I want it to immediately redirect me to a sign up page. When I open up the app I don't get redirected despite not being signed in, I get sent to the home page where it says welcome blank where it should say welcome user.username (whatever that value is set to) so why is the if statement not working?.I'm new to the react router dom so any help if appreciated. The log in does work and by changing state I can get the desired result, but I want the url to change too.
import SignIn from './components/SignIn';
import Home from './components/Home';
import { BrowserRouter as Router, Route, Routes, Navigate } 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={<Home user={user}/>}/>
{(user.username !== "") ? ( <Route element={<Navigate to="/Home"/>}/>
) : (
<Route element={<Navigate to="/Login"/>}/>
)}
</Routes>
</Router>
</div>
);
}
export default App;