Was ist der beste Weg, um redirect eine Seite mit dem Router Reagieren?
Ich bin neu zu Reagieren, Router und erfahren, dass es so viele Möglichkeiten zur Neuausrichtung der einen Seite:
- Mit
browserHistory.push("/path")
import { browserHistory } from 'react-router'; //do something... browserHistory.push("/path");
- Mit
this.context.router.push("/path")
class Foo extends React.Component { constructor(props, context) { super(props, context); //do something... } redirect() { this.context.router.push("/path") } } Foo.contextTypes = { router: React.PropTypes.object }
- In Reagieren Router v4, es gibt
this.context.history.push("/path")
undthis.props.history.push("/path")
. Details: Wie push-to-Geschichte Reagieren v4 Router?
Ich bin so verwirrt von all diesen Optionen, ist es eine beste Weg, um redirect eine Seite?
InformationsquelleAutor der Frage Liutong Chen | 2017-07-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Eigentlich es hängt von deinem use-case -
1) Sie möchten Ihre route aus nicht autorisierte Benutzer
Wenn das der Fall ist, können Sie die Komponente namens
<Redirect />
und kann die Umsetzung der folgenden Logik:Aber Bedenken Sie, dass, wenn Sie wollen
<Redirect />
zu arbeiten, wie Sie erwarten, sollten Sie es in Ihrer Komponente die render-Methode, so dass es schließlich als ein DOM-element, sonst funktioniert es nicht.2), den Sie weiterleiten möchten, nachdem eine bestimmte Aktion (sagen wir mal nach dem erstellen eines Elements)
In diesem Fall können Sie die Geschichte
oder
Haben, um Zugang zu der Geschichte, Sie können wickeln Sie Ihre Komponente mit ein-HOC-namens
withRouter
wenn Sie wickeln Sie Ihre Komponente mit, es gehtmatch
location
undhistory
Requisiten. Für mehr Details bitte haben Sie einen Blick auf die offizielle Dokumentation über withRouterWenn Ihre Komponente ist ein Kind
<Route />
Komponente, ich meine, wenn es so etwas wie<Route path='/path' component={myComponent} />
Sie nicht haben, um wickeln Sie Ihre Komponente mitwithRouter
<Route />
gehtmatch
location
undhistory
zu seinem Kind.3) leiten Sie nach dem Klick auf ein element
Hier gibt es zwei Möglichkeiten. Sie können
history.push()
durch übergabe an einen onClick-Ereignisoder verwenden Sie
<Link />
KomponenteIch denke Faustregel mit diesem Fall (ich nehme an, vor allem beceause der Leistung) zu nutzen versuchen
<Link />
erstenInformationsquelleAutor der Antwort Cagri Yardimci