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
Systemversion [root@ ~]# cat /etc/redhat-release ...
Die Protokolle in MySQL umfassen: Fehlerprotokoll...
In vertikaler Richtung können Sie die Zellenausri...
1. Einleitung (1) Einführung in vw/vh Bevor wir s...
chmod-Befehlssyntax Dies ist die korrekte Syntax ...
Dieses Tag ist nicht Teil von HTML3.2 und unterstü...
Vorab geschrieben: In den folgenden Schritten müs...
Vorgestern stieß ich in der Produktionsumgebung a...
Nachdem wir eine Webdienstanwendung (wie etwa Tom...
In diesem Artikelbeispiel wird der spezifische Co...
Detaillierte Erläuterung der Lösung für verstümme...
Busybox: Ein Schweizer Taschenmesser voller klein...
In diesem Artikel werden hauptsächlich die Unters...
Bei der Anzeige langer Daten in HTML können Sie di...
1. Führen Sie SQL aus, um anzuzeigen wählen Sie @...