I want to show or hide NewsLetter
according to the current path. For example I want it hidden for login
and register
pages, i.e., (path login & register). I have tried using useLocation
but it cannot be used outside of the router.
I hope to get a good solution so that I can also render navbar and footer in similar conditions too. Here is my current code inside App.js
:
<BrowserRouter>
<Wrapper>
<Announcement />
<Navbar />
<Routes>
<Route index path="/" element={<Home />}></Route>
<Route path="/products" element={<ProductList />}></Route>
<Route path="/products/:category" element={<ProductList category="true" />}></Route>
<Route path="/product/:id" element={<Product />}></Route>
<Route path="/register" element={isAuthenticated ? <Navigate replace to="/" /> : <Register />}></Route>
<Route path="/login" element={isAuthenticated ? <Navigate replace to="/" /> : <Login />}></Route>
<Route path="/account" element={isAuthenticated ? <Navigate replace to="/" /> : <Account />}></Route>
<Route path="/forgot-password" element={isAuthenticated ? <Navigate replace to="/" /> : <ForgotPassword />}></Route>
<Route path="/cart" element={<Cart />}></Route>
<Route path="/wishlist" element={<Wishlist />}></Route>
<Route path="/orders/tracking" element={<Tracking />}></Route>
<Route path="/orders/checkout" element={<Checkout />}></Route>
</Routes>
<Newsletter />
</Wrapper>
<Footer />
</BrowserRouter>