Maison > Questions et réponses > le corps du texte
J'ai du mal à écrire du code pour afficher une page de connexion sans barre de navigation ni barre latérale. Je suis tombé sur quelques pages posant des questions similaires, mais aucune ne semble correspondre à ma situation actuelle.
Comment masquer la barre de navigation dans la page de connexion du routeur React Les exemples donnés sont excellents, mais je pense que la manière d'accomplir la même tâche a changé avec réagir-router-dom v6, ce qui m'amène à https://dev.to/iamandrewluca/private-route-in-react- En savoir plus ce changement dans router-v6-lg5
On dirait que je ne comprends pas quelque chose au routage de React Router. Dans le code ci-dessous, j'ai deux itinéraires. Je souhaite afficher l'un des itinéraires (connexion) sans barre de navigation ni composants de barre latérale.
const App = () => { return ( <> <Routes> <Route path="/login" element={<LoginPage />} /> </Routes> <NavBar /> <SideBar /> <main className={styles["main--container"]}> <div className={styles["main--content"]}> <Routes> <Route path="/" element={<Dashboard />} /> </Routes> </div> </main> </> ); };
Une autre option que j'ai également essayée consistait à déplacer les étiquettes de la barre de navigation et de la barre latérale dans un composant de tableau de bord, mais je dois ensuite faire le même copier-coller avec n'importe quel nouveau composant. Cette approche semble erronée et inefficace, mais si c'est la bonne approche, je ferai le nécessaire
EDIT : Je pense qu'il est important d'inclure que ce qu'il fait actuellement est de charger la page de connexion qui contient la barre de navigation et la barre latérale. Le composant Navigation vers le tableau de bord comporte une barre de navigation et une barre latérale, mais cela est intentionnel. Je veux que la page de connexion n'ait ni barre de navigation ni barre latérale
P粉4914214132023-10-25 17:29:41
Le moyen le plus simple de masquer la barre de navigation est d'accéder au composant de la page de connexion et d'appeler useLocation(). Ensuite, après avoir déclaré l'emplacement d'utilisation, vous feriez quelque chose comme ceci. et assignez-le à une position variable { location.pathname === "/login" ?Vide : (
Rendu l'intégralité du composant de la barre de navigation);
Pas si tu peux lire pendant que je tape sur mon téléphone
P粉2486022982023-10-25 10:27:05
Si je comprends votre question, vous souhaitez que la navigation et la barre latérale soient rendues sur les itinéraires sans connexion. Pour ce faire, vous pouvez créer un composant de mise en page pour les restituer ainsi que les sorties de l'itinéraire imbriqué.
import { Outlet } from 'react-router-dom'; const AppLayout = () => ( <> <NavBar /> <SideBar /> <main className={styles["main--container"]}> <div className={styles["main--content"]}> <Outlet /> // <-- nested routes rendered here </div> </main> </> ); const App = () => { return ( <> <Routes> <Route path="/login" element={<LoginPage />} /> <Route element={<AppLayout />} > <Route path="/" element={<Dashboard />} /> // <-- nested routes </Route> </Routes> </> ); };
useRoutes
hooksconst routesConfig = [ { path: "/login", element: <LoginPage />, }, { element: <AppLayout />, children: [ { path: "/", element: <Dashboard />, }, ], }, ];
...
import { useRoutes } from 'react-router-dom'; const App = () => { const routes = useRoutes(routesConfig); return routes; };
const routesConfig = [ { path: "/login", element: <LoginPage />, }, { element: <AppLayout />, children: [ { path: "/", element: <Dashboard />, }, ], }, ];
...
import { createBrowserRouter, RouterProvider } from 'react-router-dom'; const router = createBrowserRouter(routesConfig); const App = () => { return <RouterProvider router={router} />; };