Verstehen Sie React Outlet mit der richtigen Weiterleitung
In diesem Artikel werden die Funktionsweise von React-Outlets und die Routing-Grundlagen in React-Anwendungen erläutert. Zuallererst müssen wir die Grundlagen des Routings verstehen
Die Grundlagen verstehen
Bevor wir uns damit befassen, stellen wir sicher, dass wir ein solides Verständnis von React Router haben.
Was ist ein React Router? React Router ist eine beliebte JavaScript-Bibliothek, die die Navigation zwischen verschiedenen Ansichten in einer React-Anwendung ermöglicht. Sie können damit Routen definieren, die URLs bestimmten Komponenten zuordnen. Mehr..
-
Warum ist Routing wichtig? Routing ist für die Erstellung von Single-Page-Anwendungen (SPAs) unerlässlich, in denen der Benutzer navigieren kann, ohne die gesamte Seite neu laden zu müssen, wodurch ein reibungsloseres und dynamischeres Erlebnis entsteht.
Jetzt tauchen wir ein in das React Outlet
Was ist React Outlet?
Das
Diese Funktion hilft bei der Verwaltung komplexer Layouts, bei denen ein Teil der Seite konsistent bleibt, z. B. Kopfzeilen oder Seitenleisten, während sich andere Teile je nach Route dynamisch ändern.
Wie funktioniert es: Wenn die URL mit einer übergeordneten Route übereinstimmt, sucht der React Router nach einem
Lassen Sie uns das Outlet mit dem richtigen React-Routing für die React-Anwendung implementieren
import React from "react"; // import components import AllRoutes from "./routes"; // component const App = () => { return ( <> <AllRoutes /> </> ); }; export default App;
Diese AllRoutes-Komponente definiert ein Routing-System für eine React-Anwendung mithilfe von „react-router-dom“, das die Navigation zwischen verschiedenen Seiten in einer React-Web-App verwaltet. Hier ist eine detaillierte Aufschlüsselung des Codes
import React from "react"; // import components import AllRoutes from "./routes"; // component const App = () => { return ( <> <AllRoutes /> </> ); }; export default App;
Pakete importieren
BrowserRouter: Diese Komponente ermöglicht das Routing im Browser. Es verwendet die HTML5-Verlaufs-API, um die Benutzeroberfläche mit der URL synchron zu halten.
Outlet, Route, Routen: Diese Komponenten definieren und verwalten die verschiedenen Routen (oder Seiten) in der Anwendung.
Suspense: Suspense wird verwendet, um verzögert geladene Komponenten zu verarbeiten. Es zeigt eine Fallback-Komponente (in diesem Fall einen benutzerdefinierten Loader) an, während die Komponente geladen wird.
lazy: Diese Funktion ermöglicht die Codeaufteilung, indem Komponenten nur dann verzögert geladen werden, wenn sie benötigt werden, wodurch die Leistung der App durch Reduzierung der anfänglichen Bundle-Größe verbessert wird.
Loader: Dies ist eine benutzerdefinierte Komponente, die eine Ladeanzeige anzeigt, während die Komponenten langsam geladen werden.
ProtectedRoute: Diese benutzerdefinierte Komponente stellt sicher, dass bestimmte Routen nur autorisierten Benutzern zugänglich sind, und erhöht so die Sicherheit.
Root-Route (/): Diese Route ist für den Root-Pfad unserer Anwendung. Es rendert die Login-Komponente.
Routenpfade importieren
Die Anwendung importiert vordefinierte Pfade (z. B. Dashboard, HomePath, LoginPath, RootPath) aus einer separaten Datei (routePaths). Dies erleichtert die Wartung des Codes und vermeidet die Festcodierung von Routenpfaden innerhalb der Komponenten.
Routen in der AllRoutesComponent definieren
Die Hauptfunktion AllRoutesComponent definiert, wie die verschiedenen Routen in der App gehandhabt werden:
Die Root-Route (rootPath) dient als Container für untergeordnete Routen.
Die Indexroute rendert die LoginComponent standardmäßig, wenn der Benutzer den /-Pfad besucht.
Der /login-Pfad rendert auch die LoginComponent.
Routen wie /home und /dashboard sind in eine ProtectedRoute-Komponente eingebettet, um sicherzustellen, dass nur autorisierte Benutzer auf diese Seiten zugreifen können.
Was sind die geschützten Routen?
Einige Routen (wie HomePath und Dashboard) sind in einem ProtectedRoute-Element verschachtelt. Das bedeutet, dass Benutzer bestimmte Bedingungen erfüllen müssen (z. B. angemeldet sein), um auf diese Seiten zugreifen zu können. Wenn ein Benutzer nicht autorisiert ist, leitet ihn die ProtectedRoute-Komponente normalerweise zur Anmeldeseite oder einer Fehlerseite weiter.
Hier ist der Code der geschützten Route
// import packages import { BrowserRouter, Outlet, Route, Routes } from "react-router-dom"; import React, { Suspense, lazy } from "react"; import { dashboard, homePath, loginPath, rootPath } from "./routePaths"; import Loader from "../components/loader"; import ProtectedRoute from "./protectedRoute"; // import route paths const LoginComponent = lazy(() => import("../pages/login")); const HomeComponent = lazy(() => import("../pages/home")); const RouteNotFoundComponent = lazy(() => import("../pages/pageNotFound")); const DashboardComponent = lazy(() => import("../pages/dashboard/")); const AllRoutesComponent = () => { return ( <Suspense fallback={<Loader />}> <BrowserRouter> <Routes> <Route path={rootPath} element={<Outlet />}> <Route index element={<LoginComponent />} /> <Route path={loginPath} element={<LoginComponent />} /> <Route element={<ProtectedRoute />}> <Route path={homePath} element={<HomeComponent />} /> <Route path={dashboard} element={<DashboardComponent />} /> </Route> <Route path="*" element={<RouteNotFoundComponent />} /> </Route> </Routes> </BrowserRouter> </Suspense> ); }; export default AllRoutesComponent;
Erklärung zum Code
- Pakete importieren
React, { useEffect }: React ist das Kernpaket zum Erstellen der Benutzeroberfläche, und useEffect ist ein Hook, der Nebenwirkungen in Funktionskomponenten ausführt. Hier wird useEffect verwendet, um die Umleitung zu handhaben, wenn der Benutzer nicht authentifiziert ist.
useNavigate: Dieser Hook von React-Router-Dom ermöglicht die programmatische Navigation. Es wird verwendet, um Benutzer umzuleiten, wenn sie nicht authentifiziert sind.
Outlet: Dies ist ein Platzhalter für verschachtelte Routen innerhalb der geschützten Route. Es ermöglicht das dynamische Rendern untergeordneter Routen.
BaseLayout: Diese Komponente umschließt die geschützte Route mit einem Layout und sorgt so für ein einheitliches Aussehen und eine einheitliche Struktur für geschützte Seiten.
- Komponentendefinition
useNavigate(): Dieser Hook ermöglicht die Navigation zu verschiedenen Routen. In diesem Fall wird es verwendet, um zum RootPath zu navigieren, wenn der Benutzer nicht authentifiziert ist.
isAuthenticated und user: Diese Werte sind vorerst fest codiert, können aber dynamisch festgelegt werden, typischerweise durch Überprüfen eines Authentifizierungsstatus (wie eines JWT-Tokens, Sitzungsdaten usw.) aus einem globalen Status oder einem Kontext.
isAuthenticated: Ein Flag, das bestimmt, ob der Benutzer authentifiziert ist. Bei „false“ wird der Benutzer umgeleitet.
Benutzer: Der aktuell angemeldete Benutzer. Dieser Wert kann dynamisch aus einem Kontext oder globalen Status abgerufen werden, aber im Moment handelt es sich um eine fest codierte Zeichenfolge („shruti“).
useEffect: Der useEffect-Hook wird bei jeder Authentifizierung ausgeführt oder navigiert durch Änderungen.
Innerhalb von useEffect prüft der Code, ob der Benutzer authentifiziert ist. Wenn nicht (! authentifiziert ist), wird der Benutzer mithilfe der Navigationsfunktion zum Root-Pfad weitergeleitet.
Die Option {replace: true } verhindert, dass die Umleitung zum Browserverlauf hinzugefügt wird, was bedeutet, dass der Benutzer nicht zur geschützten Seite zurückkehren kann.
Jetzt tauchen wir in den BaseLayout-Komponentencode ein
import React from "react"; // import components import AllRoutes from "./routes"; // component const App = () => { return ( <> <AllRoutes /> </> ); }; export default App;
Die BaseLayout-Komponente dient als gemeinsame Layoutstruktur für alle Seiten in unserer Anwendung.
Es enthält allgemeine Elemente wie eine Seitenleiste und einen Hauptinhaltsbereich.
Untergeordnete Komponenten aus verschiedenen Routen werden mithilfe der Outlet-Komponente im Hauptinhaltsbereich gerendert.
Versuchen Sie diesen Artikel, um das Lazy-Loading-Routing mit Router-Ausgang zu implementieren
Abschluss
Lazy Loading Routing mit Outlet in React ist eine leistungsstarke Möglichkeit, die Leistung zu optimieren, indem die anfängliche Ladezeit Ihrer App verkürzt wird. Durch die Verwendung von React.lazy() und Suspense stellen Sie sicher, dass Komponenten nur bei Bedarf geladen werden, während die Outlet-Komponente ein effizientes verschachteltes Routing ermöglicht. In Kombination mit der Verwendung geschützter Routen bietet dieser Ansatz eine modulare, skalierbare und leistungsfreundliche Struktur für die Verwaltung von Routen in Ihrer Anwendung.
Das ist es!
Probieren Sie es aus und teilen Sie mir Ihre Meinung in den Kommentaren mit!
Das obige ist der detaillierte Inhalt vonVerstehen Sie React Outlet mit der richtigen Weiterleitung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen











Python eignet sich besser für Anfänger mit einer reibungslosen Lernkurve und einer kurzen Syntax. JavaScript ist für die Front-End-Entwicklung mit einer steilen Lernkurve und einer flexiblen Syntax geeignet. 1. Python-Syntax ist intuitiv und für die Entwicklung von Datenwissenschaften und Back-End-Entwicklung geeignet. 2. JavaScript ist flexibel und in Front-End- und serverseitiger Programmierung weit verbreitet.

Zu den Hauptanwendungen von JavaScript in der Webentwicklung gehören die Interaktion der Clients, die Formüberprüfung und die asynchrone Kommunikation. 1) Dynamisches Inhaltsaktualisierung und Benutzerinteraktion durch DOM -Operationen; 2) Die Kundenüberprüfung erfolgt vor dem Einreichung von Daten, um die Benutzererfahrung zu verbessern. 3) Die Aktualisierung der Kommunikation mit dem Server wird durch AJAX -Technologie erreicht.

Die Anwendung von JavaScript in der realen Welt umfasst Front-End- und Back-End-Entwicklung. 1) Zeigen Sie Front-End-Anwendungen an, indem Sie eine TODO-Listanwendung erstellen, die DOM-Operationen und Ereignisverarbeitung umfasst. 2) Erstellen Sie RESTFUFFUPI über Node.js und express, um Back-End-Anwendungen zu demonstrieren.

Es ist für Entwickler wichtig, zu verstehen, wie die JavaScript -Engine intern funktioniert, da sie effizientere Code schreibt und Leistungs Engpässe und Optimierungsstrategien verstehen kann. 1) Der Workflow der Engine umfasst drei Phasen: Parsen, Kompilieren und Ausführung; 2) Während des Ausführungsprozesses führt die Engine dynamische Optimierung durch, wie z. B. Inline -Cache und versteckte Klassen. 3) Zu Best Practices gehören die Vermeidung globaler Variablen, die Optimierung von Schleifen, die Verwendung von const und lass und die Vermeidung übermäßiger Verwendung von Schließungen.

Python und JavaScript haben ihre eigenen Vor- und Nachteile in Bezug auf Gemeinschaft, Bibliotheken und Ressourcen. 1) Die Python-Community ist freundlich und für Anfänger geeignet, aber die Front-End-Entwicklungsressourcen sind nicht so reich wie JavaScript. 2) Python ist leistungsstark in Bibliotheken für Datenwissenschaft und maschinelles Lernen, während JavaScript in Bibliotheken und Front-End-Entwicklungsbibliotheken und Frameworks besser ist. 3) Beide haben reichhaltige Lernressourcen, aber Python eignet sich zum Beginn der offiziellen Dokumente, während JavaScript mit Mdnwebdocs besser ist. Die Wahl sollte auf Projektbedürfnissen und persönlichen Interessen beruhen.

Sowohl Python als auch JavaScripts Entscheidungen in Entwicklungsumgebungen sind wichtig. 1) Die Entwicklungsumgebung von Python umfasst Pycharm, Jupyternotebook und Anaconda, die für Datenwissenschaft und schnelles Prototyping geeignet sind. 2) Die Entwicklungsumgebung von JavaScript umfasst Node.JS, VSCODE und WebPack, die für die Entwicklung von Front-End- und Back-End-Entwicklung geeignet sind. Durch die Auswahl der richtigen Tools nach den Projektbedürfnissen kann die Entwicklung der Entwicklung und die Erfolgsquote der Projekte verbessert werden.

C und C spielen eine wichtige Rolle in der JavaScript -Engine, die hauptsächlich zur Implementierung von Dolmetschern und JIT -Compilern verwendet wird. 1) C wird verwendet, um JavaScript -Quellcode zu analysieren und einen abstrakten Syntaxbaum zu generieren. 2) C ist für die Generierung und Ausführung von Bytecode verantwortlich. 3) C implementiert den JIT-Compiler, optimiert und kompiliert Hot-Spot-Code zur Laufzeit und verbessert die Ausführungseffizienz von JavaScript erheblich.

Python eignet sich besser für Datenwissenschaft und Automatisierung, während JavaScript besser für die Entwicklung von Front-End- und Vollstapel geeignet ist. 1. Python funktioniert in Datenwissenschaft und maschinellem Lernen gut und unter Verwendung von Bibliotheken wie Numpy und Pandas für die Datenverarbeitung und -modellierung. 2. Python ist prägnant und effizient in der Automatisierung und Skripten. 3. JavaScript ist in der Front-End-Entwicklung unverzichtbar und wird verwendet, um dynamische Webseiten und einseitige Anwendungen zu erstellen. 4. JavaScript spielt eine Rolle bei der Back-End-Entwicklung durch Node.js und unterstützt die Entwicklung der Vollstapel.
