Ich habe eine einfache App mit Reagieren Router v4.0. Es gibt Home und Über Links, die gedrückt werden können und entsprechende Route wird auf einer Seite gerendert werden.React Router hält Komponente beim Drücken auf aktiven Link unmounting
Ich bemerkte, dass, wenn sie auf einem bereits aktiven Startseite Link zweimal oder mehr klicken - Startseite Komponente wird wieder montiert jedes Mal, das unerwartete Verhalten ist.
Dies geschieht nur, wenn Route
Element nicht direkt in Router
ist, aber in einer Wrapper-Funktion ist App
. Ex: https://codesandbox.io/s/wwnxxqy4m5 (drücken Sie auf Home Link und überprüfen Konsolenprotokolle)
const Root =() => (
<Router>
<App />
</Router>
);
Wenn ich Routen setzen direkt an Router
Komponente Home
ist nicht abgehängt jedes Mal.
const Root =() => (
<Router>
<div>
<ul>
<li><NavLink to="/">Home</NavLink></li>
<li><NavLink to="/about">About</NavLink></li>
</ul>
<hr/>
<Route exact path="/" component={withRouter(Home)}/>
<Route path="/about" component={withRouter(About)}/>
</div>
</Router>
);
Hat jemand Ideen, warum Aushängen von Startseite gezwungen wird, wenn Wrapper-Funktion verwendet?
Vielen Dank für Ihre Antwort Shubham. withRouter - in diesem Fall nur für ein vereinfachtes Beispiel. In der realen Welt App habe ich RequireAuth höherer Ordnung Funktion, die ich in component = {RequireAuth (Home)} verwende. Ich würde gerne einer Aussage zustimmen, dass "jedes Mal, wenn eine neue Instanz erstellt wird", aber das nicht den Grund erklärt, warum Route, die direkt in Routen ohne App verwendet wird, dieses Verhalten nicht verursacht –
Nicht sicher warum nicht passieren, aber das gleiche Problem wird in dieser GitHub-Ausgabe erwähnt: https://github.com/ReactTraining/react-router/issues/4630 –