React verwendet Routing, um zur Anmeldeoberfläche umzuleiten

React verwendet Routing, um zur Anmeldeoberfläche umzuleiten

Im vorherigen Artikel haben wir nach der Konfiguration der Webpack- und React-Umgebung begonnen, die Anmeldeschnittstelle und die anschließende Funktion zum Springen zur Homepage zu schreiben.

1. Schauen Sie sich zunächst die gesamte Verzeichnisstruktur an.

Denn beim Betrachten von Beispielen, die von anderen geschrieben wurden, können häufig unerwartete Probleme auftreten, weil Sie mit der Verzeichnisstruktur nicht vertraut sind.

Allgemeine Verzeichnisstruktur

2. Allgemeiner Ablauf:

1) Webpack-Konfigurationseintragsdatei src/index.js
2) Nach dem Ausführen von index.html laden Sie zunächst die Eintragsdatei src/index.js
3) Laden Sie die Routing-Tabelle src/router/index.js
4) Gemäß der Konfiguration in der Routing-Tabelle wird zuerst die Login-Schnittstelle src/login.js geladen
5) Wenn Sie sich erfolgreich bei der Anmeldeoberfläche angemeldet haben, springen Sie zu src/components/myView.js
6) Wenn Sie in der Datei myView auf das linke Menü klicken, werden die angegebenen Seiten angezeigt (alle in der Routing-Tabelle konfiguriert).

3. Schreiben Sie HTML-Dateien.

Darunter 1) wird die ID myContent verwendet, um die von uns geschriebenen Komponenten zu platzieren.
2) Die im Skript geladene Datei ist die von webpack gepackte JS-Datei.

<Text>
 <div id="meinInhalt"></div>
 <script src="./dist/bundle.js"></script>
</body>

4. Die Anmeldeschnittstelle ist in login.js geschrieben

1) Einführung der erforderlichen Module: antd (Ant Design) ist eine Komponentenbibliothek, und alle in unserem Projekt verwendeten Komponenten stammen daraus. (https://ant.design/index-cn) (Wenn antd.css nicht eingeführt wird, zeigt die Schnittstelle den Stil nicht an)

React von „react“ importieren
importiere {Formular,Eingabe,Symbol,Schaltfläche} von 'antd'
// importiere {render} von „react-dom“
// importiere Axios von „Axios“

importiere '../node_modules/antd/dist/antd.css' //Wenn Sie diese Datei nicht importieren, wird der Antd-Stil nicht angezeigt importiere './style/login.css';

2) Erstellen Sie eine Anmeldeformularkomponente. Neben den grundlegenden Formular-, Eingabe- und Schaltflächenkomponenten ist die Hauptfunktion zur Implementierung der Sprungfunktion history.push('/View'); (wobei history = this.props.history;). Der Pfad in der Push-Funktion ist der in der Routing-Tabelle () konfigurierte Pfad, und die beiden müssen übereinstimmen.

Klasse LoginFrom erweitert React.Component{
 Konstruktor(){
 super()
 }

 handleSubmit = (e) => {
 //Vor dem Absenden prüfen, ob das Eingabefeld Fehler enthält e.preventDefault();
 
 **let history = diese.props.history;**
 this.props.form.validateFields((Fehler,Werte)=>{
  wenn (!Fehler) {
  console.log('Empfangene Werte der Form: ', Werte);
  **history.push('/Ansicht');**
  }
 })
 }

 machen(){
 //Die von Form.create gepackte Komponente verfügt über eine eigene this.props.form-Eigenschaft, die eine Reihe von APIs bereitstellt, darunter die folgenden 4 //getFieldDecorator wird für die bidirektionale Bindung mit dem Formular verwendet //isFieldTouched bestimmt, ob ein Eingabesteuerelement den Werterfassungszeitpunkt von getFieldDecorator options.trigger erfahren hat (der Zeitpunkt der Werterfassung des untergeordneten Knotens, der Standardwert ist onChange)
 //getFieldError ruft den Fehler eines Eingabesteuerelements ab
 //Ermittelt den Fehler einer Gruppe von Eingabesteuerelementen. Wenn keine Parameter übergeben werden, wird der Fehler aller Komponenten ermittelt.
 const { getFieldDecorator, getFieldsError, getFieldError, isFieldTouched } = this.props.form;
 const userNameError = isFieldTouched('Benutzername') && getFieldError('Benutzername');
 const passWordError = isFieldTouched('Passwort') && getFieldError('Passwort');
 zurückkehren (
  <div Klassenname="Anmelden">
  <div className="Anmeldeformular">
   <div Klassenname="Login-Logo">
   <div className="Anmeldename">MSPA</div>
   </div>
   <Formular beiSubmit={this.handleSubmit}>
   {/* Setze ein mit getFieldDecorator dekoriertes untergeordnetes Element in ein FromItem */}
   <Formular.Element
    validateStatus={userNameError ? 'error' : ''} //validateStatus ist der Validierungsstatus. Wenn nicht gesetzt, wird er automatisch entsprechend den Validierungsregeln generiert. Optional: 'success' 'warning' 'error' 'validating'
   >
   {
    getFieldDecorator('Benutzername',{
    Regeln: [{erforderlich: wahr, Nachricht: "Bitte geben Sie Ihren Benutzernamen ein!"}]
    })(
    <Eingabepräfix={<Symboltyp="Benutzer" Stil={{ Farbe: 'rgba(0,0,0,.25)' }}/>}
     Platzhalter="Benutzername"
    />
    )
   }
   </Form.Item>
   <Formular.Element
    validateStatus={passWordError ? "Fehler" : ''}
   >
   {
    getFieldDecorator('Passwort',{
    Regeln: [{erforderlich: wahr, Nachricht: "Bitte geben Sie Ihr Passwort ein!"}]
    })(
    <Eingabepräfix={<Symboltyp="Schloss" Stil={{ Farbe: 'rgba(0,0,0,.25)' }}/>}
     Platzhalter="Passwort"
    />
    )
   }
   </Form.Item>
   <Formular.Element>
    <Schaltfläche
    Typ="primär"
    htmlType="Senden"
    deaktiviert={hasErrors(getFieldsError)}
    >Anmelden</Button>
   </Form.Item>
   </Form>
  </div>
  </div>
 )
 }
}
let LoginForm = Form.create()(LoginForm);
Standard-Anmeldeformular exportieren;

3. Im zweiten Schritt haben wir die statische Seite geschrieben und der nächste Schritt besteht darin, die Routing-Tabelle** zu konfigurieren. **Wir haben die Routing-Informationen in index.js unter dem Router-Ordner konfiguriert. Chinesische Dokumentation zu react-router (https://react-guide.github.io/react-router-cn/), wo eine kurze Einführung in die Geschichte nachgeschlagen werden kann (https://www.jb51.net/article/208929.htm), die relativ einfach und schnell zu verstehen ist.


Der Code lautet wie folgt: Die in den ersten drei Zeilen eingeführten Module sind Basismodule, und die später importierten Module sind vorgefertigte Komponenten: Auf der Startseite wird die Anmeldeoberfläche angezeigt, und nach erfolgreicher Anmeldung springt man zur myView-Oberfläche. myPicture und myDocument sind die Komponenten, die nach dem Klicken auf die myView-Oberfläche angezeigt werden. (Verschachtelte Routen)

React von „react“ importieren
importiere {HashRouter als Router, Route, Switch} aus ‚react-router-dom‘
importiere { createBrowserHistory} aus "history";

importiere MyView aus '../components/myView.js'
LoginModule aus '../login.js' importieren
importiere MeinBild aus '../components/myPicture'
importiere MyDocument aus '../components/myDocument.js'

exportiere Standardklasse MyRoute erweitert React.Component{
 machen(){
 zurückkehren(
  <Router-Verlauf={createBrowserHistory()}>
  <Schalter>
   <Route exakter Pfad="/" component={LoginModule}/>
   <MyView-Pfad='/View'-Komponente={MyDocument}>
   <Route path="/View/abc" component={MeinDokument} />
   <Route path="/View/myPicture" component={MyPicture} /> 
   </MeineAnsicht> 
  </Schalter>
  </Router>
 )
 } 
}

4. Als nächstes schreiben wir den folgenden Code in die Datei index.js (Eintragsdatei des Programms) im Ordner src.

importiere MyRoute aus './router/index.js'
importiere {render} von 'react-dom'
React von „react“ importieren
machen(
 <MeineRoute />, 
 document.getElementById('meinInhalt')
);

5. Die Ergebnisse des Programmtests lauten wie folgt:

1) Anmeldeschnittstelle (login.js):


2) Geben Sie Benutzernamen und Passwort ein und klicken Sie auf die Anmeldeseite (myView.js):

Bildbeschreibung hier einfügen

Dies ist das Ende dieses Artikels über die Verwendung von React zur Verwendung von Routing zur Weiterleitung zur Anmeldeoberfläche. Weitere Informationen zur Verwendung von React-Routing zur Weiterleitung zur Anmeldeseite finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Implementierungsschritte zum Einrichten der React+Ant Design-Entwicklungsumgebung
  • So erstellen Sie ein React-Projekt mit Vite
  • React-Beispiel zum Abrufen des Werts aus dem Eingabefeld
  • React implementiert den Beispielcode der Radiokomponente
  • Lassen Sie uns über mein Verständnis und meine Anwendung von React Context sprechen
  • Einführungstutorial zu React Hooks
  • Detaillierter Prozess zur Erstellung eines VR-Panoramaprojekts mit React und Threejs
  • Ein kurzer Vortrag über die Geschichte von React Router
  • So vereinfachen Sie Redux mit Redux Toolkit

<<:  Eine einfache Möglichkeit, das Passwort in MySQL 5.7 zu ändern

>>:  Eine kurze Erläuterung, warum Daemon Off beim Ausführen von Nginx in Docker verwendet wird

Artikel empfehlen

Lösung für das Timeout-Problem bei der Installation von Docker-Compose mit PIP

1: Installationsbefehl pip install docker-compose...

Web-Kenntnisse: Lösung für die Koexistenz mehrerer IE-Versionen IETester

Meine Empfehlung Lösung für die Koexistenz mehrer...

Zusammenfassung der SQL-Deduplizierungsmethoden

Wenn wir SQL zum Extrahieren von Daten verwenden,...

js und jquery, um einen Tab-Statusleisten-Umschalteffekt zu erzielen

Heute werden wir einen einfachen Fall durchgehen ...

Beispiel für die Implementierung einer eingebetteten Tabelle mit vue+elementUI

Während meines Praktikums im letzten Studienjahr ...

Detaillierte Erklärung zum dynamischen Festlegen des Browsertitels in Vue

Inhaltsverzeichnis Unsinn Text Der erste router/i...

JavaScript BOM-Standortobjekt + Navigatorobjekt + Verlaufsobjekt

Inhaltsverzeichnis 1. Standortobjekt 1. URL 2. Ei...

Detaillierte Erklärung zur Verwendung des Linux-Befehls mpstat

1. mpstat-Befehl 1.1 Befehlsformat mpstat [ -A ] ...

Entpackte Version der MySQL-Installation und aufgetretene Fehler und Lösungen

1 Installation Laden Sie die entsprechende entpac...