国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Breadcrumb-Navigation und partielles Match-Routing für React-Router v6
P粉520545753
P粉520545753 2024-01-10 16:48:48
0
1
771

Ich verwende ?react-router-dom v6.8.1“ (die aktuellste Version) und habe zuvor eine Bibliothek eines Drittanbieters namens ?use-react-router-breadcrumbs“ zum Einrichten von Breadcrumbs verwendet. Laut Dokumentation empfehlen sie jetzt ?Use the“. ?Eingebauter React-Router-Weg“, die Dokumentation finden Sie hier. Es basiert auf dem Anh?ngen eines Breadcrumbs an das Handle-Objekt jeder Route und der Verwendung des useMatches-Hooks zum Abrufen.

Also habe ich den Code umgeschrieben, aber er hat einen ziemlich gro?en Fehler, den ich nicht beheben kann. Nehmen wir an, ich habe 3 Routen, 2 und 3 sind unter 1 verschachtelt:

{
    path: '/',
    element: <Layout />,
    handle: {
      crumb: () => 'Home',
    },
    children: [
      {
        path: '/users',
        element: <UserList />,
        handle: {
          crumb: () => 'Users',
        },
      },
      {
        path: '/users/:id',
        element: <UserDetails />,
        handle: {
          crumb: () => <DynamicUserNameCrumb />,
        },
      },
   ]
}

Mit einer benutzerdefinierten Bibliothek k?nnen Sie zu /users/:id gehen und die Breadcrumbs für jede Route abrufen, sodass die gesamte Breadcrumb-Navigation so aussieht:

"Home -> Benutzer -> John Doe"

Wenn ich jedoch die neue integrierte Methode und den Hook useMatches() verwende, kann ich nur die Routen 1 und 3 abgleichen. Route 2 (/users) gilt nicht als übereinstimmung und ich kann nicht auf die Breadcrumbs für diese Route zugreifen. Das Ergebnis ist das, was ich nicht will:

"Home -> John Doe"

Meine Frage lautet also: Wie sollten Sie mit dieser Situation umgehen? Mein erster Gedanke war, Route 3 unter 2 zu verschachteln, damit die Breadcrumbs korrekt angezeigt würden, aber in Wirklichkeit würde es als die durch Route 2 (Benutzerliste) definierte Komponente gerendert werden, w?hrend ich nur Route 1 (Layout) und 3 rendern wollte ( Benutzerdetailseite).

Ich habe erwartet, dass useMatches() eine Konfiguration akzeptiert, um Teilübereinstimmungen zurückzugeben, aber es scheint, dass dieser Hook keine Eingaben akzeptiert.

Ich bin gerade dabei, einen Rollback durchzuführen und zu einer Bibliothek eines Drittanbieters zurückzukehren, wollte aber vorher hier nachfragen, da dort eindeutig die Verwendung nativer L?sungen basierend auf useMatches und Handle-Objekten empfohlen wird. Ich denke, wenn dies die offiziell empfohlene Methode zum Umgang mit React-Router-Breadcrumbs ist, muss es eine L?sung geben.

P粉520545753
P粉520545753

Antworte allen(1)
P粉113938880

從我所了解的情況來看,這是因為"/users""/users/:id"是兄弟路由。重構(gòu)路由配置,使"/users/:id"成為"/users"的子路由,這樣就有了一個“邏輯路徑”,從"/""users"":id"的各個段。

示例:

const router = createBrowserRouter([
  {
    path: "/",
    element: <Layout />,
    handle: {
      crumb: () => "Home"
    },
    children: [
      {
        path: "/users",
        handle: {
          crumb: () => "Users"
        },
        children: [
          {
            index: true,
            element: <UserList />
          },
          {
            path: "/users/:id",
            element: <UserDetails />,
            handle: {
              crumb: () => <DynamicUserNameCrumb />
            }
          }
        ]
      }
    ]
  }
]);

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage