Maison > interface Web > js tutoriel > le corps du texte

Comment rediriger par programme dans React Router v6 à partir d'un composant de classe ?

Patricia Arquette
Libérer: 2024-10-31 23:34:28
original
763 Les gens l'ont consulté

How to Programmatically Redirect in React Router v6 from a Class Component?

Dans React Router v6, comment puis-je rediriger par programme vers une route spécifique à partir d'un composant de classe ?

Problème :

Lorsque vous tentez de rediriger par programme vers une route différente à partir d'un composant de classe dans React Router v6, vous pouvez rencontrer l'erreur suivante :

TypeError: Cannot read properties of undefined (reading 'push')
Copier après la connexion

Cette erreur se produit car l'accessoire de navigation n'est pas disponible sur les composants de classe dans la v6. . Au lieu de cela, il n'est accessible qu'aux composants fonctionnels.

Solution :

Il existe deux façons de résoudre ce problème :

  1. Convertissez le composant de classe en composant de fonction :

    • Convertissez le composant de classe AddContacts en composant fonctionnel à l'aide de hooks (par exemple, useState, useEffect et useNavigate).
  2. Créez un HOC withRouter personnalisé :

    • Créez un composant d'ordre supérieur (HOC) appelé withRouter qui injecte l'accessoire de navigation et d'autres React Router s'accroche au composant encapsulé.
    • Décorez le composant AddContacts avec le withRouter HOC de la manière suivante :
import withRouter from './withRouter'; // Change this to the path of your custom HOC file

export default withRouter(AddContacts);
Copier après la connexion

Cela fournira la navigation prop au composant AddContacts.

Remarque supplémentaire :

Dans React Router v6, la fonction de navigation n'est plus un objet mais une fonction qui prend le chemin cible comme le premier argument et un objet options facultatif comme deuxième argument.

interface NavigateFunction {
  (
    to: To,
    options?: { replace?: boolean; state?: State }
  ): void;
  (delta: number): void;
}
Copier après la connexion

Cela signifie que la syntaxe de navigation a également changé. Pour accéder à un itinéraire à l'aide de la navigation, appelez la fonction comme suit :

// Example usage
this.props.navigate("/");
Copier après la connexion

En suivant l'une des solutions ci-dessus, vous devriez pouvoir rediriger par programme vers différentes routes dans React Router v6.

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!

source:php.cn
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal