Question :
the complexity inside the .map function is so high, any suggestions about reorganizing the code to map the routes and apply protection to them at the same time? i tried adding the routes inside an array so I can loop through them, my code is working perfectly but I'm searching for a better approach since this look so complex and wrong
This is my Routes config file
import Login from '../Pages/Auth/Login';
import Register from '../Pages/Auth/Register';
import Home from '../Pages/Home/Home';
const routes = [
{
path: '/',
component: <Home />,
protected: false,
},
{
path: '/login',
component: <Login />,
protected: false,
},
{
path: '/register',
component: <Register />,
protected: false,
},
];
export default routes;
this is my App.js file
import { useEffect } from 'react';
import { useDispatch, useSelector } from 'react-redux';
import { BrowserRouter, Route, Routes } from 'react-router-dom';
import { isLoggedIn } from './redux/slices/auth';
import './App.css';
import Layout from './Layouts/Layout';
import routes from './config/routes';
function App() {
const dispatch = useDispatch();
const user = useSelector((state) => state.user);
useEffect(() => {
dispatch(isLoggedIn());
}, []);
return (
<>
<BrowserRouter>
<Layout>
<Routes>
{routes.map((route, i) => (
<>
{route.path === '/' ? (<Route key={i} exact path={route.path} element={route.component} />) : ((user && route.protected && <Route key={i} path={route.path} element={route.component} />) || (!user && !route.protected && <Route key={i} path={route.path} element={route.component} />))}
</>
))}
</Routes>
</Layout>
</BrowserRouter>
</>
);
}
export default App;