Maison > interface Web > js tutoriel > Comment corriger l'erreur « TypeError : impossible de lire les propriétés d'un défini (lecture de \'push\')\ » dans React Router v6 ?

Comment corriger l'erreur « TypeError : impossible de lire les propriétés d'un défini (lecture de \'push\')\ » dans React Router v6 ?

Patricia Arquette
Libérer: 2024-11-01 14:41:02
original
1026 Les gens l'ont consulté

How to Fix

Navigation par programmation dans React Router v6

La navigation par programmation dans React Router v6 peut présenter l'erreur "TypeError : impossible de lire les propriétés d'undéfini (lecture de ' push')" erreur. Cela se produit lorsque vous tentez de naviguer à partir d'un accessoire de navigation inexistant, qui n'est pas défini.

Cause :

Le hook useNavigate est conçu pour les composants de fonction. Les composants de classe nécessitent un composant d'ordre supérieur (HOC) personnalisé ou une conversion en composants fonctionnels.

Solution 1 : convertir en composant fonctionnel

Convertir AddContacts en composant de fonction et utiliser useNavigate :

<code class="javascript">import { useNavigate } from "react-router-dom";

const AddContacts = () => {
  const navigate = useNavigate();

  const onSubmit = (e) => {
    // ... submit logic ...
    navigate("/");
  };

  return (
    // ... form elements ...
  );
};</code>
Copier après la connexion

Solution 2 : Personnaliser avec le routeur HOC

Créer une personnalisation avec le routeur HOC :

<code class="javascript">const withRouter = (WrappedComponent) => (props) => {
  const navigate = useNavigate();

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

Et envelopper AddContacts avec le HOC :

<code class="javascript">export default withRouter(AddContacts);</code>
Copier après la connexion

Syntaxe de navigation mise à jour

Dans React Router v6, la fonction de navigation a une syntaxe modifiée :

<code class="javascript">navigate(to, options?);
// where to is the target path and options is an optional object with replace and/or state</code>
Copier après la connexion

Ainsi, le L'instruction de navigation devient :

<code class="javascript">this.props.navigate("/");</code>
Copier après la connexion

En utilisant ces solutions, vous pouvez naviguer efficacement par programme dans React Router v6 et éviter l'erreur de navigation non définie.

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