Maison > interface Web > js tutoriel > Comment naviguer par programme dans React Router sans modifier la fonction de rendu ?

Comment naviguer par programme dans React Router sans modifier la fonction de rendu ?

Susan Sarandon
Libérer: 2024-12-05 14:27:14
original
1128 Les gens l'ont consulté

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

Naviguer par programmation avec React-Router

Défi :

Dans votre application React, vous souhaitez naviguer par programmation vers un itinéraire différent en fonction du statut de connexion de l'utilisateur. Vous ne savez pas comment y parvenir sans modifier la fonction de rendu.

Solution pour React-Router v4 :

Utilisation d'objets d'historique :

Enveloppez votre composant avec withRouter et exploitez la méthode history.push à partir des accessoires. Cette approche est utile lorsque votre composant accepte les accessoires de routage ou n'est pas directement lié au routeur.

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);
Copier après la connexion

Utilisation de la redirection :

Pour des scénarios plus simples, vous pouvez utilisez 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 />;
}
}
Copier après la connexion

Solution pour React-Router v2/v3 :

Utilisation du contexte du routeur :

Enveloppez votre composant et accédez au contexte du routeur pour modifier dynamiquement les itinéraires.

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;
Copier après la connexion

Utilisation de l'historique du navigateur :

L'accès direct à l'historique du navigateur peut également déclencher navigation.

import { browserHistory } from 'react-router';

// Redirect to specific path
browserHistory.push('/some/path');
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal