I am currently working on my navbar for my dashboard and encountered a problem when my navbar components are all defined but not rendering on the screen. I also used nested routes in index.js but that also didn't work for me. Can anybody guide me and solve this error, this has frustrated me for some days.
Here is my index.js :
import React from 'react';
import ReactDOM from 'react-dom';
import { BrowserRouter, Route, Redirect, Switch } from 'react-router-dom';
import App from './App.jsx';
import Login from './screens/Login.jsx';
import Register from './screens/Register.jsx';
import Activate from './screens/Activate.jsx';
import Private from './screens/Private.jsx';
import Admin from './screens/Admin.jsx';
import Usage from './screens/Usage.jsx';
import Invoices from './screens/Invoices.jsx';
import Documentation from './screens/Documentation.jsx';
import Plan from './screens/Plan.jsx';
import ForgetPassword from './screens/ForgetPassword.jsx';
import ResetPassword from './screens/ResetPassword.jsx';
import PrivateRoute from './Routes/PrivateRoute';
import AdminRoute from './Routes/AdminRoute';
import 'react-toastify/dist/ReactToastify.css';
ReactDOM.render(
<BrowserRouter>
<Switch>
<Route path='/' exact render={props => <App {...props} />} >
<Route path = '/plan' exact element = {<Plan/>}/>
<Route path = '/usage' exact element = {<Usage/>}/>
<Route path = '/documentation' exact element = {<Documentation/>}/>
<Route path = '/invoices' exact element = {<Invoices/>}/>
</Route>
<Route path='/login' exact render={props => <Login {...props} />} />
<Route path='/register' exact render={props => <Register {...props} />} />
<Route path='/users/password/forget' exact render={props => <ForgetPassword {...props} />} />
<Route path='/users/password/reset/:token' exact render={props => <ResetPassword {...props} />} />
<Route path='/users/activate/:token' exact render={props => <Activate {...props} />} />
<PrivateRoute path="/private" exact component={Private} />
<AdminRoute path="/admin" exact component={Admin} />
<Redirect to='/' />
</Switch>
</BrowserRouter>,
document.getElementById('root')
);
Here is my app.jsx:
import "./App.module.scss";
import React,{ useState } from "react";
import { Route,Redirect,Switch } from "react-router-dom";
import { isAuth } from "./helpers/auth";
import Navbar from "./components/Navbar/Navbar";
import Container from "./components/Container/Container";
import RightNavbar from "./components/RightNavbar/RightNavbar";
import Dashboard from './screens/Dashboard';
import Usage from './screens/Usage';
import Plan from './screens/Plan';
import Invoices from './screens/Invoices';
import Documentation from './screens/Documentation';
import NavContext from "./context/NavContext";
function App() {
const [nav, setNav] = useState(false);
const value = { nav, setNav };
return (
<div className="App">
{isAuth() ? null : <Redirect to = '/login'/>}
<NavContext.Provider value={value}>
<Navbar />
<Container
stickyNav={<RightNavbar />}
content={
<Switch>
<Route path="*" element={<main>NOT FOUND</main>} />
<Route path="/" element={<Dashboard/>} />
<Route path="/usage" element={<Usage/>} />
<Route path="/plan" element={<Plan/>} />
<Route path="/documentation" element={<Documentation/>} />
<Route path="/invoices" element={<Invoices/>} />
</Switch>
}
/>
</NavContext.Provider>
</div>
);
}
export default App;