React 6.4.0 En-têtes communs pour tous les routeurs
P粉864872812
2023-08-25 17:19:53
<p>Je démarre un projet React en utilisant <code>react-router-dom</code> version 6.4.0 mais je ne parviens pas à créer un en-tête commun pour toutes les routes. </p>
<p>App.js - C'est le fichier dans lequel j'ai ajouté <code>RouterProvider</code></p>
<pre class="brush:php;toolbar:false;">importer le logo depuis './logo.svg';
importer './App.css';
importer { Link, Outlet, RouterProvider } depuis "react-router-dom" ;
importer des {routeurs} depuis "./routes/routes" ;
fonction App() {
retour (
<RouterProvider router={routers}>
<div>En-tête</div>
<Sortie />
</ProviderRouteur>
);
}
exporter l'application par défaut ;</pre>
<p>routes.js - Dans ce fichier, je vais créer toutes les routes</p>
<pre class="brush:php;toolbar:false;">import { createBrowserRouter, redirect } depuis "react-router-dom";
importer À propos de "../pages/About/About" ;
importer la page d'accueil depuis "../pages/Home/Home" ;
import { getUser, isAuthenticated } depuis "../sso/authUtil" ;
const authLoader = () =>
si (!isAuthenticated()) {
return redirect("https://google.com");
} autre {
return getUser();
}
} ;
exporter les routeurs const = createBrowserRouter ([
{
chemin : "/",
élément : <Accueil />,
chargeur : authLoader,
},
{
chemin : "/à propos",
élément : <À propos de />,
},
]);≪/pré>
<p>Home.js - Ce fichier est la page d'accueil et contient des liens vers d'autres pages ainsi que le titre</p>
<pre class="brush:php;toolbar:false;">importer React depuis "react" ;
importer { Link, Outlet, useLoaderData } depuis "react-router-dom" ;
const Accueil = () =>
const loaderData = useLoaderData();
retour (
≪>
<div>En-tête</div>
<Lien vers="/">Accueil</Lien>
<Lien vers="/à propos de">À propos de</Lien>
<div>Accueil : {loaderData}</div>{""}
<Sortie />
≪/>
);
}
exporter la page d'accueil par défaut ;</pre>
<p>About.js - Il s'agit d'un composant normal qui représente about</p>
<pre class="brush:php;toolbar:false;">importer React depuis "react" ;
const À propos de = () =>
return <div>À propos</div>;
} ;
exporter par défaut À propos ;</pre>
<p>Je souhaite que les composants <code>Accueil</code> et <code>À propos</code> aient le titre en haut lors de leur chargement. </p>
Même en
react-router-dom@6.4.0
, le routage avec la disposition de rendu générique de l'interface utilisateur fonctionne toujours correctement.Créez un composant d'itinéraire de mise en page qui restitue le composant d'en-tête commun et un pour les itinéraires imbriqués
Outlet
.Exemple :
Importé et rendu sur le tracé du tracé dans la configuration
Layout
....