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
Patricia Arquetteoriginal
2024-11-01 14:41:021040parcourir

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>

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>

Et envelopper AddContacts avec le HOC :

<code class="javascript">export default withRouter(AddContacts);</code>

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>

Ainsi, le L'instruction de navigation devient :

<code class="javascript">this.props.navigate("/");</code>

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!

Déclaration:
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