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

Comment rediriger par programme dans React Router v6 avec des composants de classe ?

Patricia Arquette
Libérer: 2024-11-01 06:55:30
original
143 Les gens l'ont consulté

How to Programmatically Redirect in React Router v6 with Class Components?

Problème de redirection par programme vers une route dans React Router v6

Problème

Face à une TypeError : impossible de lire les propriétés d'undefined (lecture de 'push' ) en essayant de naviguer à l'aide du hook useNavigate dans un composant de classe.

Cause

Dans React Router v6, useNavigate n'est compatible qu'avec les composants de fonction. Lorsque vous essayez de l'utiliser dans un composant de classe (AddContacts), il reste indéfini, ce qui entraîne l'erreur.

Solution

Pour résoudre ce problème, il existe deux options :

1. Convertir AddContacts en composant de fonction

Refactorisez le composant de classe AddContacts en composant de fonction. Cela vous permettra d'utiliser le hook useNavigate directement dans la fonction.

2. Utilisez un Custom withRouter HOC (Higher Order Component)

Créez un personnalisé withRouter HOC pour injecter les accessoires d'itinéraire, y compris useNavigate, dans le composant AddContacts.

Voici un exemple de personnalisation withRouter HOC :

const withRouter = (WrappedComponent) => (props) => {
  const navigate = useNavigate();

  return (
    <WrappedComponent
      {...props}
      navigate={navigate}
    />
  );
};
Copier après la connexion

Ensuite, décorez le composant AddContacts avec le HOC :

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

Cela transmettra l'accessoire de navigation au composant AddContacts et vous permettra de l'utiliser comme prévu.

Remarque sur le changement de l'API de navigation

Dans React Router v6, l'API de navigation a changé. L'objet historique n'est plus directement utilisé. Au lieu de cela, il existe une fonction de navigation qui prend un ou deux arguments : un chemin cible et un objet "options" facultatif pour le remplacement ou l'état.

Pour naviguer par programme, utilisez la syntaxe suivante :

this.props.navigate('/');
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!

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!