I want to simply redirect the user to '/login' who is not logged in and tries to go a route that is designed for logged in user. Vice versa but redirect to '/'
I heard that react-router-v6 does things differently , even tried using chatGPT who just kept me going in a bunch of loops for different error.
[navigate just refers to useNavigate() ]
let routes;
if (isLoggedIn) {
routes = (
<React.Fragment>
<Route exact path="/" element={<Searchbar changeHeader={setHeader} />} />
<Route path="/Result" element={<Result changeHeader={setHeader} topic={header} />} />
<Route path="/Chatbox/:sID" element={<Chatbox />} />
<Route path="/Assist" element={<Assist changeHeader={setHeader} />} />
navigate('/')
</React.Fragment>
);
} else {
routes = (
<React.Fragment>
<Route exact path="/" element={<Searchbar changeHeader={setHeader} />} />
<Route path="/Result" element={<Result changeHeader={setHeader} topic={header} />} />
<Route path="/Login" element={<LoginForm />} />
navigate('/login')
</React.Fragment>
);
}
this is the return component
return (
<AuthContext.Provider value={{ isLoggedIn: isLoggedIn, login: login, logout: logout }}>
<Router>
<div className="App">
{/* This is the main NAVBAR */}
<Navbar header={header} headersetter={setHeader} />
<div className="aSearch">
<Routes>
{routes}
</Routes>
</div>
</div>
</Router>
</AuthContext.Provider>
);
}
I tried using useHistory() but that wouldn't be possible cause not all routes have already been visited. Tried to use bunch of if conditions but made the code way messier