Heim > Web-Frontend > js-Tutorial > Wie kann ich in React Router v6 eine Klassenkomponente programmgesteuert umleiten?

Wie kann ich in React Router v6 eine Klassenkomponente programmgesteuert umleiten?

Patricia Arquette
Freigeben: 2024-10-31 23:34:28
Original
797 Leute haben es durchsucht

How to Programmatically Redirect in React Router v6 from a Class Component?

Wie leite ich in React Router v6 programmgesteuert von einer Klassenkomponente zu einer bestimmten Route um?

Problem:

Beim Versuch, programmgesteuert von einer Klassenkomponente in React Router v6 auf eine andere Route umzuleiten, kann der folgende Fehler auftreten:

TypeError: Cannot read properties of undefined (reading 'push')
Nach dem Login kopieren

Dieser Fehler tritt auf, weil die Navigationsstütze für Klassenkomponenten in v6 nicht verfügbar ist . Stattdessen ist es nur für Funktionskomponenten zugänglich.

Lösung:

Es gibt zwei Möglichkeiten, dieses Problem zu beheben:

  1. Konvertieren Sie die Klassenkomponente in eine Funktionskomponente:

    • Konvertieren Sie die AddContacts-Klassenkomponente mithilfe von Hooks (z. B. useState, useEffect und useNavigate) in eine Funktionskomponente.
  2. Erstellen Sie ein benutzerdefiniertes withRouter HOC:

    • Erstellen Sie eine Komponente höherer Ordnung (HOC) namens withRouter, die die Navigationsstütze und andere einfügt React Router hakt sich in die verpackte Komponente ein.
    • Dekorieren Sie die AddContacts-Komponente mit dem withRouter HOC auf folgende Weise:
import withRouter from './withRouter'; // Change this to the path of your custom HOC file

export default withRouter(AddContacts);
Nach dem Login kopieren

Dies sorgt für die Navigation prop zur AddContacts-Komponente.

Zusätzlicher Hinweis:

In React Router v6 ist die Navigationsfunktion kein Objekt mehr, sondern eine Funktion, die den Zielpfad als aufnimmt das erste Argument und ein optionales Optionsobjekt als zweites Argument.

interface NavigateFunction {
  (
    to: To,
    options?: { replace?: boolean; state?: State }
  ): void;
  (delta: number): void;
}
Nach dem Login kopieren

Das bedeutet, dass sich auch die Syntax für die Navigation geändert hat. Um mit Navigieren zu einer Route zu navigieren, rufen Sie die Funktion wie folgt auf:

// Example usage
this.props.navigate("/");
Nach dem Login kopieren

Wenn Sie eine der oben genannten Lösungen befolgen, sollten Sie in React Router v6 programmgesteuert zu verschiedenen Routen umleiten können.

Das obige ist der detaillierte Inhalt vonWie kann ich in React Router v6 eine Klassenkomponente programmgesteuert umleiten?. 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