React unterscheidet sich von Vue. Es implementiert die Routenunterbrechung durch Festlegen von Metazeichen in der Route. Bei Verwendung von Vue bietet das Framework eine Routing-Guard-Funktion, mit der vor dem Betreten einer bestimmten Route einige Überprüfungsarbeiten durchgeführt werden. Wenn die Überprüfung fehlschlägt, springt sie zur 404- oder Anmeldeseite, beispielsweise zur Funktion beforeEnter in Vue: ... router.beforeEach(async(zu, von, weiter) => { const toPath = zu.Pfad; const vonPfad = von.Pfad; }) ... Die Grundidee von React zur Implementierung der Routing-Interception besteht darin, die Renderfunktion von Route zu verwenden. Das Abfangen wird durch die Beurteilung der Abfangbedingungen erreicht, um den Sprung verschiedener Komponenten zu realisieren. In früheren Versionen stellte React Router auch einen ähnlichen onEnter-Hook bereit, aber in React Router 4.0 wurde diese Methode abgebrochen. React Router 4.0 und höher verwendet deklarative Komponenten. Router sind Komponenten. Um die Routing-Guard-Funktion zu implementieren, müssen wir sie selbst schreiben. importiere * als React von „react“; importiere { HashRouter, Switch, Route, Redirect } von „react-router-dom“; importiere Index aus "./page/index"; Home aus "./page/home" importieren; importiere ErrorPage aus "./page/error"; Login aus "./page/login" importieren; export const Router = () => ( <HashRouter> <Schalter> <Routenpfad="/" genaue Komponente={Index}/> <Routenpfad="/login" genaue Komponente={Login}/> <Routenpfad="/home" genaue Komponente={Home}/> <Route path="/404" genaue Komponente={ErrorPage}/> <Weiterleitung zu="/404" /> </Schalter> </HashRouter> ); Die obige Router-Komponente enthält drei Seiten:
Erstellen Sie zunächst eine Datei routerMap.js im Stammverzeichnis src. Der Code lautet wie folgt: /** * Definieren Sie die Routing-Komponente und setzen Sie „Auth“ auf „true“, um anzugeben, dass für die Route eine Berechtigungsüberprüfung erforderlich ist.*/ importiere Admin aus "./pages/Admin"; Login aus "./pages/Login" importieren; Importfehler aus "./pages/Error"; exportiere const routerMap = [ {Pfad: "/", Name: "admin", Komponente: Admin, Authentifizierung: true}, {Pfad: "/login", Name: "Login", Komponente: Login}, {Pfad: "/Fehler", Name: "Fehler", Komponente: Fehler}, ]; Alle Routing-Sprünge werden vom FrontendAuth-High-Order-Komponenten-Proxy ausgeführt. Hier ist die Implementierung der Komponente FrontendAuth.js: /** * Routing Guard-Überprüfung */ importiere React, {Component} von „react“; importiere {Route, Redirect} von „react-router-dom“; Klasse FrontendAuth erweitert Komponente { // eslint-disable-next-line kein nutzloser Konstruktor Konstruktor(Requisiten) { super(Requisiten); } rendern() { const {routerConfig, location} = diese.props; const {Pfadname} = Standort; const isLogin = localStorage.getItem("Benutzer"); console.log(Pfadname, isLogin); console.log(Speicherort); // Wenn für die Route keine Berechtigungsprüfung erforderlich ist, außer für die Anmeldeseite im angemeldeten Zustand // Denn nach der Anmeldung können Sie nicht zur Anmeldeseite springen // Dieser Teil des Codes dient zum Zugriff auf Routen, für die im nicht angemeldeten Zustand keine Berechtigungsprüfung erforderlich ist const targetRouterConfig = routerConfig.find( (Element) => Element.Pfad === Pfadname ); console.log(ZielRouterConfig); wenn (targetRouterConfig && !targetRouterConfig.auth && !isLogin) { const {Komponente} = ZielRouterConfig; zurück <Route exakter Pfad={Pfadname} Komponente={Komponente}/>; } wenn (istLogin) { // Wenn Sie angemeldet sind, möchten Sie zur Anmeldeseite springen und zur Startseite weiterleiten, wenn (Pfadname === "/login") { zurück <Umleitung zu="/"/>; } anders { // Wenn die Route zulässig ist, springe zur entsprechenden Route if (targetRouterConfig) { zurückkehren ( <Routenpfad={Pfadname} Komponente={targetRouterConfig.component}/> ); } anders { // Wenn die Route unzulässig ist, Weiterleitung zur 404-Seite return <Redirect to="/error"/>; } } } anders { // Im Nicht-Anmeldestatus, wenn die Route zulässig ist und eine Berechtigungsüberprüfung erfordert, zur Anmeldeseite springen und eine Anmeldung anfordern, wenn (targetRouterConfig && targetRouterConfig.auth) { zurückgeben <Umleitung zu="/login"/>; } anders { // Im nicht angemeldeten Zustand, wenn die Route unzulässig ist, Weiterleitung zu 404 zurückgeben <Umleitung zu="/error"/>; } } } } Standard-FrontendAuth exportieren; Definieren Sie dann die Router-Komponente. In App.js ist diese Komponente das Ergebnis der Umhüllung durch eine Komponente höherer Ordnung: importiere „./App.less“; importiere React, {Fragment} von "react"; importiere {Switch} von ‚react-router-dom‘ importiere FrontendAuth aus "./FrontendAuth"; importiere {routerMap} aus "./routerMap"; Funktion App() { zurückkehren ( <Fragment> {/*Nur einen abgleichen, wenn der Abgleich erfolgreich ist, keinen weiteren Abgleich durchführen, hohe Effizienz*/} <Schalter> <FrontendAuth routerConfig={routerMap}/> </Schalter> </Fragment> ); } Standard-App exportieren; prüfen Dies ist das Ende dieses Artikels über die Implementierung von React Routing Guard (Route Interception). Weitere relevante Inhalte zu React Routing Guard finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
<<: Spezifische Verwendung des Linux-Befehls „dirname“
>>: MySql-Wissenspunkte: Transaktion, Index, Sperrprinzip und Nutzungsanalyse
Inhaltsverzeichnis 1. Wenn die Maus über das Karu...
Vorschlag: Das möglichst häufige handschriftliche ...
Inhaltsverzeichnis 1. Holen Sie sich den Wert des...
Aus Kodierungsgründen werden beim Hochladen oder ...
Bereitstellen einer Datenbank basierend auf Docke...
Vorwort echarts ist mein am häufigsten verwendete...
Inhaltsverzeichnis Umgebungsbeschreibung Installi...
Inhaltsverzeichnis Versteckte, absteigende und fu...
Inhaltsverzeichnis 1. Globale Wache 1. Globale Fr...
Inhaltsverzeichnis Vorwort Modifikatoren des V-Mo...
Bei gleichzeitigen Zugriffen kann es zu nicht wie...
Wenn Komponenten detaillierter werden, treten Sit...
Wenn Sie Ihren Hostnamen ändern möchten, können S...
In diesem Artikel wird ein JS-Spezialeffekt vorge...
Warum steckt es fest? Es gibt eine Prämisse, die ...