I want to establish a standalone route to a login page apart from the routes that render the content of a page with a header and footer. For now the login page is supposed to close the current window as it is expected to be opened in a popup.
For that I have a following structure for my React app:
App.js
<Router>
<Route path="/login" element={<Login />} />
<Header />
<Routes>
<Route path="/" element={<Home />} />
<Route path="/page1" element={<Page1 />} />
</Routes>
<Footer />
</Router>
Login.js
import React, { useEffect } from "react";
function Login() {
useEffect(() => {
return () => {
window.close();
};
}, []);
return <h1>This window should be closed</h1>;
}
export default Login;
While if I skip the <Route path="/login" element={<Login />} />
clause, the app works fine doing what is expected. But, for some reason, if I add the top level <Route path="/login" element={<Login />} />
, it makes my app blank altogether, routes '/'
and '/page1'
stop working giving a blank page and <Login />
is not rendered.
Placing the <Route path="/login" element={<Login />} />
into the <Routes></Routes>
does not help - it renders the header and the footer for '/login', which is not what I want. Also I tried using <Route path="/login" render={() => <Login />} />
, it also does not work behaving the same way as with the element
prop.
How can I make my app render a standalone route?