Ich versuche, den Inhalt in einem Element getrennt vom Element menu nav darzustellen, aber das Rendering bleibt im selben Element wie die Menüleiste. Ich habe versucht, die Links vom Router zu trennen, aber dann Fehler bekommen.Reagiere JS - React Router - Inhalt wird separat gerendert
Hier ist meine Router-Komponente, die ich in meinen Eintrag Datei bin importieren:
import React from 'react';
import ReactDOM from 'react-dom';
import ReactDOMServer from 'react-dom/server';
import {BrowserRouter as Router, Route, Link, StaticRouter} from 'react-router-dom';
import Home from './Home.jsx';
import About from './About.jsx';
import BlogList from './BlogList.jsx';
const Routes =() => (
<Router>
<div>
<ul>
<li><Link to="/">Home</Link></li>
<li><Link to="/about">About</Link></li>
<li><Link to="/blog">Blog</Link></li>
</ul>
<Route exact path="/" component={Home} />
<Route path="/about" component={About} />
<Route path="/blog" component={BlogList} />
</div>
</Router>
)
export default Routes;
ReactDOM.render((
<Routes />
), document.getElementById('main-nav'))
Meine Frage ist:
Wie machen den Inhalt aus dem Heim, über und Blog-Komponenten in einem separaten Element, damit sie nicht innerhalb von "# main-nav" gerendert werden? Eine Route kann nur ein untergeordnetes Element haben.
Wenn ich versuche, die Routen in einem eigenen Div-Container hinzuzufügen, erhalte ich Fehler. Wenn ich ein nav-Element in die ul einpacke, erhalte ich einen Fehler.
Idealerweise möchte ich etwas wie folgt aus:
<nav id="main-nav">
<div>
<ul>
<li a href="/">Home</a></li>
<li a href="/about">About</a></li>
<li a href="/blog">Blog</a></li>
</ul>
</div>
</nav>
<div id="content">
Home/ABout/Blog Content in here
</div>
Eine Antwort für die Nummer zwei: Weil React Router den Pfad verwendet, um URLs zu entsprechen, um die Komponente zu rendern. Das bedeutet, dass '/' jeder einzelnen URL in Ihrer App entspricht. Verwenden Sie das Prop "exact", um nur den Stammpfad zu finden. – Li357
Das macht Sinn Ich werde meinen Code aktualisieren. Danke – Rick
Versuchen Sie außerdem, eine Navigationsleiste auf jeder Route zu erstellen? – Li357