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

Eine Sammlung gängiger Verwendungen von HTML-Meta-Tags

Was ist ein Mata-Tag? Das <meta>-Element li...

Die 7 besten VSCode-Erweiterungen für Vue-Entwickler

Das Hinzufügen der richtigen VS Code-Erweiterung ...

Detaillierte Einführung und Verwendungsbeispiele für Map-Tag-Parameter

Karten-Tags müssen paarweise vorkommen, d. h. <...

Interaktion im Webdesign: Eine kurze Diskussion über Paging-Probleme

Funktion: Zur vorherigen Seite oder zur nächsten ...

Lösung zur Bereinigung des Docker-Festplattenspeichers

Vor einiger Zeit stieß ich auf das Problem, dass ...

Eine benutzerfreundliche Alternative in Linux (Befehl fd)

Der Befehl fd bietet eine einfache und unkomplizi...

Funktionsprinzip und Implementierungsmethode der Vue-Anweisung

Einführung in Vue Die aktuelle Ära der großen Fro...

Drei Netzwerkmethoden und Prinzipien von virtuellen VMware-Maschinen (Zusammenfassung)

1. Brigde——Bridge: VMnet0 wird standardmäßig verw...

CocosCreator ScrollView-Optimierungsreihe: Frame-Laden

Inhaltsverzeichnis 1. Einleitung 2. Analyse des f...

Super ausführliches Tutorial zur Installation und Konfiguration von MySQL8.0.22

Hallo zusammen, heute lernen wir die Installation...

So überprüfen und organisieren Sie Websitedateien mit Dreamweaver8

Was ist der Zweck der Erstellung einer eigenen Web...

MySQL vollständig deinstallieren. Persönlicher Test!

MySQL sauber deinstallieren. Persönlich getestet,...

js-Version zur Realisierung der Rechnerfunktion

In diesem Artikelbeispiel wird der spezifische Co...