Bei der Verwendung von React-Router gibt es einen Unterschied zwischen serverseitigem und clientseitigem Routing. Normalerweise sendet Ihre App zunächst eine erste Anfrage an den Server nach einer statischen HTML-Datei, die die React-Skripte enthält. Nach dem Laden verarbeitet der Client nachfolgende URL-Änderungen, ohne neue Serveranfragen zu stellen.
Das Problem: Wenn Sie eine URL aktualisieren oder manuell eingeben, die mit einer serverseitigen Route übereinstimmt (z. B. , /joblist) im clientseitigen Routingmodus wird die beabsichtigte Ansicht nicht gerendert. Stattdessen könnte der Fehler „Cannot GET /joblist“ auftreten.
Serverseitig: Der Server verarbeitet alle URLs Routenführung. In einer statischen HTML-Site würde der Server eine HTML-Seite für die spezifische URL senden, z. B. /joblist.
Clientseitiges Routing: React-Router übernimmt das URL-Routing auf der Clientseite . Anstatt eine neue Seite vom Server anzufordern, wird der angezeigte Inhalt basierend auf der URL-Änderung dynamisch aktualisiert.
Um dieses Problem zu beheben, müssen Sie Routen auf beiden Servern einrichten und Kundenseiten. Hier sind mögliche Möglichkeiten, dies zu tun:
Dieser Ansatz verwendet URLs mit einem Hash-Präfix (#), wie /joblist#/about. Der Teil nach dem Hash wird nicht an den Server gesendet, sodass der Server immer die Root-URL (/) sieht. Clientseitig übernimmt React-Router den #/about-Teil.
Nachteile:
Richten Sie eine Catch-All-Route auf dem Server ein. Wenn der Server beispielsweise eine URL empfängt, die nicht mit einer bestimmten Route übereinstimmt, sendet er die Datei index.html. Dadurch wird sichergestellt, dass die React-App unabhängig von der eingegebenen URL geladen wird.
Nachteile:
Dieser Ansatz kombiniert das Catch-All mit spezifischen serverseitigen Routen für wichtige Seiten. Sie könnten statische HTML-Dateien für diese Seiten bereitstellen und so deren Inhalte für Suchmaschinen verfügbar machen.
Nachteile:
Bei diesem Ansatz führen sowohl der Server als auch der Client denselben JavaScript-Code aus. Dies löst das Problem, indem das gleiche Markup an den Client gesendet wird, unabhängig davon, ob der Seitenübergang auf der Server- oder auf der Clientseite erfolgt.
Nachteile:
Bedenken Sie Folgendes Faktoren:
Letztendlich hängt die beste Option für Sie von Ihren spezifischen Anforderungen und technischen Fähigkeiten ab.
Das obige ist der detaillierte Inhalt vonWarum funktioniert mein React-Router nach einer Seitenaktualisierung oder manuellen URL-Eingabe nicht?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!