Heim > Web-Frontend > js-Tutorial > Wie navigiere ich programmgesteuert im React Router, ohne die Renderfunktion zu ändern?

Wie navigiere ich programmgesteuert im React Router, ohne die Renderfunktion zu ändern?

Susan Sarandon
Freigeben: 2024-12-05 14:27:14
Original
1072 Leute haben es durchsucht

How to Programmatically Navigate in React Router without Modifying the Render Function?

Programmgesteuertes Navigieren mit React-Router

Herausforderung:

In Ihrer React-Anwendung möchten Sie programmgesteuert zu einem navigieren unterschiedliche Route basierend auf dem Anmeldestatus des Benutzers. Sie sind sich nicht sicher, wie Sie dies erreichen können, ohne die Renderfunktion zu ändern.

Lösung für React-Router v4:

Verwendung von Verlaufsobjekten:

Verpacken Sie Ihre Komponente mit withRouter und nutzen Sie die Methode „history.push“ von props. Dieser Ansatz ist nützlich, wenn Ihre Komponente Routing-Requisiten akzeptiert oder nicht direkt mit dem Router verbunden ist.

import { withRouter } from 'react-router';

class App extends React.Component {
...
componentDidMount() {
// Check user login status
if (isLoggedIn) {
// Redirect to home route
this.props.history.push('/home');
}
}
render() {
// Render login component
return <Login />;
}
}

export default withRouter(App);
Nach dem Login kopieren

Umleitung verwenden:

Für einfachere Szenarien können Sie dies tun Verwenden Sie Redirect.

import { withRouter } from 'react-router';

class App extends React.Component {
...
render() {
// If user is logged in, redirect to home route
if (isLoggedIn) {
return <Redirect to="/home" />;
}
// Render login component
return <Login />;
}
}
Nach dem Login kopieren

Lösung für React-Router v2/v3:

Router-Kontext verwenden:

Umschließen Sie Ihre Komponente und greifen Sie auf den Router-Kontext zu, um Routen dynamisch zu ändern.

import React from 'react';

class App extends React.Component {
...
render() {
// Check user login status
if (isLoggedIn) {
// Change route using router context
this.context.router.push('/home');
}
// Render login component
return <Login />;
}
}

App.contextTypes = {
router: React.PropTypes.object.isRequired
};
export default App;
Nach dem Login kopieren

Verwenden des Browserverlaufs:

Der direkte Zugriff auf den Browserverlauf kann ebenfalls ausgelöst werden Navigation.

import { browserHistory } from 'react-router';

// Redirect to specific path
browserHistory.push('/some/path');
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie navigiere ich programmgesteuert im React Router, ohne die Renderfunktion zu ändern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage