Ich versuche, ein Prozentzeichen in einer React-Router-ID zu verwenden. Da die Verwendung von %
in URI verboten ist, muss ich meinen URI manuell codieren, um dieses Prozentzeichen verwenden zu können. Mit einem Link ich daher die encodeURI Funktion verwenden, um die URI zu kodieren:Mit Prozent (%) anmelden react-router: ID
<Link to={`/r/${encodeURI(my_str_with_unencoded_percent_sign)}`} >
Im Quellcode meiner Seite, ich kann sehen, dass der Link verwendet %25
und nicht %
.
Immer noch, wenn ich auf den Link klicke, bekomme ich den Fehler "URIEfehler: fehlerhafte URI-Sequenz" (in einem anderen Teil meines Codes habe ich eine <Match pattern="/r/:id" …
).
Was habe ich falsch gemacht? Es scheint, dass die URL vor decodiert wird, die an die parseParams-Funktion von react-router übergeben wird, die versucht, es ein zweites Mal zu decodieren, was zu diesem Fehler führt.
Ich habe Probleme wie https://github.com/ReactTraining/history/issues/461 oder https://github.com/ReactTraining/history/issues/461 gefunden, aber ich habe keine Lösung für dieses Problem gefunden: Wie kann ich ein Prozentzeichen in einem React-Router verwenden: ID?
Hallo. Vielen Dank für Ihre Antwort. Ihre Lösung funktioniert zwar, wenn ich auf die auf der Seite angezeigten Links klicke, funktioniert aber beim Aktualisieren der Seite nicht: Wenn ich auf den Link «Netflix» klicke, wird die ID wie erwartet korrekt angezeigt und die URL wird geändert in meinem Web-Navigator zu "http: //domain.tld/%netflix". Wenn ich mit F5 oder Strg + R auffrische, bekomme ich immer noch den gleichen Fehler. Wird das erwartet? Test-Code ist hier (nur hier für den einfachen Zip-Download, wie Sie gesagt haben, Codesandbox ist kaputt und zeigt eine Webseite): https://codesandbox.io/s/zj7ok3l5x –
Sie erhalten einen Fehler 'missformed url' vom Versuch, direkt zu einer URL zu navigieren, die ein '%' oder eine URL enthält, die ein '% 'verschlüsselt enthält? –
Nun, die URL enthält% (nicht codiert, in der URL-Leiste), während es eine codierte% enthalten sollte, da ich die encodeURI-Funktion verwende. Dennoch, react-router versteht die Verschlüsselung, da das Klicken auf die Links auf die richtige Route umleitet. –