TS2322: Geben Sie ‘{ render: () => Element; }“ kann dem Typ „IntrinsicAttributes & (PathRouteProps | LayoutRouteProps | IndexRouteProps)“ nicht zugewiesen werden. Die Eigenschaft „render“ ist für den Typ „IntrinsicAttributes & (PathRouteProps | LayoutRouteProps | IndexRouteProps)“ nicht vorhanden.
Allerdings basierend auf die Dokumentationhat es render zum Route. Wie kann ich es richtig verwenden?
Das sieht nach einem Fehler in der Dokumentation aus. Beachte wie direkt im Abschnitt darüber sie verwarfen render zugunsten von children? Aber es sieht so aus, als ob der Abschnitt, in dem Sie Gespräche über das Upgrade von v5 auf v5.1 gelesen haben, nur entfernt wurde render in v6. Sieht aus wie <Route element={<Navigate to="/" />} /> ist der neue Stil.
Auch von gist.github.com/mjackson/…: “Wenn Sie endlich ein Upgrade auf v6 durchführen, konvertieren Sie <Route render={() => ...}> zu <Route element={...}> und du bist fertig.“
– Bergi
7. November 2021 um 1:48 Uhr
Dank @Bergi gelingt mir ein kleines Update: <Route path="*" element={<Navigate to="/" />} />gerne als Antwort posten!
– Hongbo Miao
7. November 2021 um 6:06 Uhr
Rodolfo Silva
Ich denke, Sie sollten den No-Match-Route-Ansatz verwenden.
Um den Verlauf sauber zu halten, sollten Sie einstellen replace Stütze. Dadurch werden zusätzliche Weiterleitungen vermieden, nachdem der Benutzer zurück geklickt hat.
Wenn Sie externe Reaktionskomponenten oder ohne Hooks umleiten möchten, sehen Sie sich diese Antwort an.
– totymedli
10. Februar um 6:56 Uhr
Was wäre wenn / ist eine übergeordnete Route zu diesen anderen? Wie verhindert man / sich selbst davon abhält, eine Route zu sein, zu der navigiert werden kann? Und stattdessen umleiten / sagen /home Wenn home ist ein Kind unter /?
– Douglas Gaskell
24. April um 8:52 Uhr
Beachten Sie, dass dies keine SSR-Unterstützung für statisches Routing hat 👍🏻
– Neil
11. Mai um 10:46 Uhr
@KashifAli In diesem Fall sollten Sie die Navigationskomponente durch Ihren benutzerdefinierten Not Found-Bildschirm ersetzen. Ich glaube nicht, dass Sie beide einen Platzhalterpfad verwenden können. Sie können jedoch einen verschachtelten Ansatz verwenden, um einzuschränken, wann der Benutzer innerhalb eines bestimmten Pfads umgeleitet werden soll.
– RodolfoSilva
16. Juni um 18:00 Uhr
Gibt es API-Dokumente zum Navigieren und Ersetzen? Es scheint, dass ich mit den Dokumenten hätte aufhören sollen, aber irgendwie endete ich hier.
– Kalte Hände
19. September um 11:37 Uhr
Hamedo Esk
Ich habe einen anderen Weg gefunden, dies zu tun:
import { useNavigate } from "react-router-dom";
let navigate = useNavigate();
useEffect(() => {
if (LoggedIn){
return navigate("/");
}
},[LoggedIn]);
Es heißt, useNavigator kann nur im Kontext des Routers verwendet werden. Es kann nicht alleine verwendet werden.
– Zain Sadaqat
16. Oktober um 14:32 Uhr
Erstellen Sie die Datei RequireAuth.tsx
import { useLocation, Navigate } from "react-router-dom";
import { useAuth } from "../hooks/Auth";
export function RequireAuth({ children }: { children: JSX.Element }) {
let { user } = useAuth();
let location = useLocation();
if (!user) {
return <Navigate to="/" state={{ from: location }} replace />;
} else {
return children;
}
}
Importieren Sie die Komponente, um dem Benutzer einen privaten Router zu benötigen:
import { Routes as Switch, Route } from "react-router-dom";
import { RequireAuth } from "./RequireAuth";
import { SignIn } from "../pages/SignIn";
import { Dashboard } from "../pages/Dashboard";
export function Routes() {
return (
<Switch>
<Route path="/" element={<SignIn />} />
<Route
path="/dashboard"
element={
<RequireAuth>
<Dashboard />
</RequireAuth>
}
/>
</Switch>
);
}
Ayush Nanda
In Version 5 von React, dh reagieren-router-dom, hatten wir die Umleitungskomponente. Aber in Version 6 von React wird es auf die Navigate-Komponenten aktualisiert.
Wir können Ersetzen in diesen Komponenten übergeben, um unnötige Weiterleitungen beim Klicken auf die Vor- und Zurück-Option zu vermeiden.
Demonstration für die Verwendung ist unten beigefügt:
Für Klassenkomponenten sollten Sie zuerst eine funktionale Komponente erstellen und dann HOC technical verwenden, um useNavigate zu verwenden Haken reagieren.
Das sieht nach einem Fehler in der Dokumentation aus. Beachte wie direkt im Abschnitt darüber sie verwarfen
render
zugunsten vonchildren
? Aber es sieht so aus, als ob der Abschnitt, in dem Sie Gespräche über das Upgrade von v5 auf v5.1 gelesen haben, nur entfernt wurderender
in v6. Sieht aus wie<Route element={<Navigate to="/" />} />
ist der neue Stil.– Bergi
7. November 2021 um 1:40 Uhr
gist.github.com/mjackson/…
– Bergi
7. November 2021 um 1:44 Uhr
Auch von gist.github.com/mjackson/…: “Wenn Sie endlich ein Upgrade auf v6 durchführen, konvertieren Sie
<Route render={() => ...}>
zu<Route element={...}>
und du bist fertig.“– Bergi
7. November 2021 um 1:48 Uhr
Dank @Bergi gelingt mir ein kleines Update:
<Route path="*" element={<Navigate to="/" />} />
gerne als Antwort posten!– Hongbo Miao
7. November 2021 um 6:06 Uhr