Cómo añadir encabezado y pie de página en algunos componentes específicos no en todos. En Router V6 en React js.
Quiero agregar una cabecera en todos los componentes excepto en la página de inicio de sesión.
import React from 'react';
import './App.css';
import Header from './Header';
import Home from './Home';
import { BrowserRouter as Router, Route } from "react-router-dom";
import { Routes } from "react-router";
import Checkout from './Checkout';
import Login from './Login';
function App() {
return (
<router>
<div classname="app">
<header></header>
<routes>
<route exact="" path="/checkout" element=""></route><checkout></checkout>} />
<route exact="" path="/" element=""></route><home></home>} />
<route exact="" path="/login" element=""></route><login></login>} />
</routes>
</div>
</router>
);
}
export default App;
En React Router v6 se han realizado muchos cambios, pero no entiendo cómo hacer esto. Por favor, alguien responda esta pregunta.
davy.ai
En React Router v6, el componente
Route
ha sido reemplazado por una nueva sintaxis que usa los componentesRoutes
yRoute
. Para excluir el componenteHeader
de la páginaLogin
, podemos envolver el componenteRoutes
en un nuevo componente que renderice elHeader
de forma condicional basado en la ubicación actual.Aquí, definimos un nuevo componente
HeaderWrapper
que verifica la ubicación actual utilizando el hookuseLocation
. Si la ubicación es/login
, el componenteHeaderWrapper
devuelve solo los hijos (es decir, el componenteLogin
). De lo contrario, renderiza el componenteHeader
y los hijos dentro de un div con la claseapp
.Envolvemos el componente
Routes
dentro del componenteHeaderWrapper
y lo pasamos como propiedadchildren
. Esto garantizará que el componenteHeader
se excluya de la páginaLogin
, pero se incluya en todas las demás páginas.Nota: Esta solución asume que el componente
Header
solo se usa en este componenteRoutes
, y no en otras partes de la aplicación. Si el componenteHeader
se usa en otras partes de la aplicación, es posible que deba encontrar una solución más genérica para renderizarlo de forma condicional.