Heim  >  Artikel  >  Web-Frontend  >  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
Patricia ArquetteOriginal
2024-11-01 14:41:02955Durchsuche

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>

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>

Und verpacken Sie AddContacts mit dem HOC :

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

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>

Somit die Die Navigationsanweisung wird zu:

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

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!

Stellungnahme:
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