Heim > Web-Frontend > js-Tutorial > Wie behebt man den Fehler „TypeError: Eigenschaften von undefiniert können nicht gelesen werden (liest \'push\')\' in React Router v6?

Wie behebt man den Fehler „TypeError: Eigenschaften von undefiniert können nicht gelesen werden (liest \'push\')\' in React Router v6?

Patricia Arquette
Freigeben: 2024-11-01 14:41:02
Original
1030 Leute haben es durchsucht

How to Fix

Programmatische Navigation in React Router v6

Programmatische Navigation in React Router v6 kann den „TypeError: Eigenschaften von undefiniert können nicht gelesen werden (lesen ' push')" Fehler. Dies tritt auf, wenn versucht wird, von einer nicht vorhandenen Navigationsstütze aus zu navigieren, die nicht definiert ist.

Ursache:

Der useNavigate-Hook ist für Funktionskomponenten konzipiert. Klassenkomponenten erfordern eine benutzerdefinierte Komponente höherer Ordnung (HOC) oder eine Konvertierung in Funktionskomponenten.

Lösung 1: In Funktionskomponente konvertieren

AddContacts in eine Funktionskomponente konvertieren und verwenden 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>
Nach dem Login kopieren

Lösung 2: Benutzerdefiniert mitRouter HOC

Erstellen Sie ein benutzerdefiniertes mitRouter HOC:

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

  return (
    <WrappedComponent {...props} navigate={navigate} />
  );
};</code>
Nach dem Login kopieren

Und verpacken Sie AddContacts mit dem HOC :

<code class="javascript">export default withRouter(AddContacts);</code>
Nach dem Login kopieren

Aktualisierte Navigationssyntax

In React Router v6 hat die Navigationsfunktion eine geänderte Syntax:

<code class="javascript">navigate(to, options?);
// where to is the target path and options is an optional object with replace and/or state</code>
Nach dem Login kopieren

Somit die Die Navigationsanweisung wird zu:

<code class="javascript">this.props.navigate("/");</code>
Nach dem Login kopieren

Durch die Verwendung dieser Lösungen können Sie in React Router v6 effektiv programmgesteuert navigieren und den undefinierten Navigationsfehler vermeiden.

Das obige ist der detaillierte Inhalt vonWie behebt man den Fehler „TypeError: Eigenschaften von undefiniert können nicht gelesen werden (liest \'push\')\' in React Router v6?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage