El componente funcional desaparece al usar react-router-dom.
Solo quería hacer una configuración de proyecto simple con react-router-dom
pero cada vez que uso route
, toda la página queda en blanco. Mi NavBar desaparece. ¿Por qué?
Había una pregunta similar para un componente de clase, por lo que no fue útil para mí.
App.js:
import "./App.css";
import Nav from "./components/Nav";
import Products from "./components/Products";
import About from "./components/About";
import { BrowserRouter as Router, Switch, Route } from "react-router-dom";
function App() {
return (
<>
<router>
<nav></nav>
<route path="/about" component="{About}"></route>
<route path="/products" component="{Products}"></route>
<about></about>
</router>
);
}
export default App;
Nav:
import React from "react";
import Navstyle from "../styles/Nav.module.css";
const Nav = () => {
return (
<nav classname="{Navstyle.Nav}">
<ul classname="{Navstyle.nav_links}">
<li>
<a href="!#">Home</a>
</li>
<li>
<a href="!#">Products</a>
</li>
<li>
<a href="!#">About</a>
</li>
</ul>
</nav>
);
};
export default Nav;
Los demás componentes solo devuelven etiquetas h2.
davy.ai
Parece que tu componente
Nav
está desapareciendo porque no está envuelto dentro del componenteSwitch
en tu archivoApp.js
.Switch
se asegura de que solo se renderice la primeraRoute
que coincida en React, por lo que es necesario envolver todos los componentesRoute
dentro de él.Aquí está el archivo
App.js
actualizado:Al envolver los componentes
Route
dentro deSwitch
, estás permitiendo que React renderice solo la primera ruta que coincida (en este caso,/about
o/products
) y así se preserva tu componenteNav
.