Implementierung des React-Konfigurations-Subroutings

Implementierung des React-Konfigurations-Subroutings

1. Die Komponente First.js hat Unterkomponenten:

Admin aus './Admin' importieren
FormCom aus „./FormCom“ importieren
importiere One aus './One'
ButtonCom aus „./ButtonCom“ importieren
importiere MenuCom aus './MenuCom'
importiere StepsCom aus './StepsCom'
importiere TabsCom aus './TabsCom'
importiere TableCom aus './TableCom'
importiere MessageCom aus './MessageCom'
importiere NotificationCom aus './NotificationCom'
importiere ProgressCom aus „./ProgressCom“
Importieren Sie SpinCom aus „./SpinCom“.
BadgeCom aus „./BadgeCom“ importieren

Der vollständige Code von First.js lautet wie folgt:

React von „react“ importieren
importiere { Layout, Menü } von „antd“;
importiere { UserOutlined, LaptopOutlined, NotificationOutlined } aus '@ant-design/icons';
importiere { HashRouter, Route, Link } von 'react-router-dom'
Admin aus './Admin' importieren
FormCom aus „./FormCom“ importieren
importiere One aus './One'
ButtonCom aus „./ButtonCom“ importieren
importiere MenuCom aus './MenuCom'
importiere StepsCom aus './StepsCom'
importiere TabsCom aus './TabsCom'
importiere TableCom aus './TableCom'
importiere MessageCom aus './MessageCom'
importiere NotificationCom aus './NotificationCom'
importiere ProgressCom aus „./ProgressCom“
Importieren Sie SpinCom aus „./SpinCom“.
BadgeCom aus „./BadgeCom“ importieren
const { Untermenü } = Menü;
const { Header, Inhalt, Seiten } = Layout;

exportiere Standardklasse First erweitert React.Component {
    Konstruktor() {
        super();
    }

    //Nur das aktuelle übergeordnete Menü erweitern begin
    rootSubmenüSchlüssel = ['sub1', 'sub2', 'sub3'];

    Zustand = {
        openKeys: ['sub1'],
    };

    beiÖffnenÄnderung = Schlüssel öffnen => {
        const latestOpenKey = openKeys.find(Schlüssel => this.state.openKeys.indexOf(Schlüssel) === -1);
        wenn (this.rootSubmenuKeys.indexOf(latestOpenKey) === -1) {
            this.setState({ openKeys });
        } anders {
            dies.setState({
                openKeys: letzterOffenerSchlüssel ? [letzterOffenerSchlüssel] : [],
            });
        }
    };
    //Nur das aktuelle übergeordnete Menü erweitern Ende

    rendern() {
        zurück (<div>
            <Layout>
                <HashRouter>
                    <Header-Klassenname="Header"-Stil = {{ Position: 'fest', zIndex: 1, Breite: '100 %', Polsterung links: '20px'}}>
                        <div className="logo" style={{fontSize: '32px', color: '#ffffff', fontWeight: 'bold'}}>React-App</div>
                        <Menüthema="dunkel" Modus="horizontal" defaultSelectedKeys={['1']}>
                            {/*<Menu.Item key="1">Navigation 1</Menu.Item>
                            <Menu.Item key="2">Navigation 2</Menu.Item>
                            <Menu.Item key="3">Navigation 3</Menu.Item>*/}
                        </Menü>
                    </Header>
                    <Layout>
                        <Seitenbreite={200} Klassenname="site-layout-background" Stil={{
                            Überlauf: „auto“,
                            Höhe: '100vh',
                            Position: 'fest',
                            links: 0,
                        }}>
                            <Menü
                                Thema="dunkel"
                                Modus="inline"
                                Standardmäßig ausgewählte Schlüssel = {['2']}
                                Standard-OpenKeys = {['sub1']}
                                Stil = {{ Höhe: '100 %', Polsterung oben: '60px', Rahmen rechts: 0 }}
                                beiOpenChange={this.onOpenChange}
                                openKeys={dieser.Zustand.openKeys}
                            >
                                <SubMenu key="sub1" icon={<UserOutlined />} title="subnav 1">
                                    <Menu.Item key="1"><Link zu={`${this.props.match.path}/admin`}>Administrator</Link></Menu.Item>
                                    <Menu.Item key="2"><Link to={`${this.props.match.path}/form`}>Formular</Link></Menu.Item>
                                    <Menu.Item key="3"><Link to={`${this.props.match.path}/one`}>Eins</Link></Menu.Item>
                                    <Menu.Item key="4"><Link to={`${this.props.match.path}/menu`}>Menü</Link></Menu.Item>
                                </Untermenü>
                                <SubMenu key="sub2" icon={<LaptopOutlined />} title="subnav 2">
                                    <Menu.Item key="5"><Link to={`${this.props.match.path}/step`}>Schritt</Link></Menu.Item>
                                    <Menu.Item key="6"><Link to={`${this.props.match.path}/tabs`}>Registerkarten</Link></Menu.Item>
                                    <Menu.Item key="7"><Link to={`${this.props.match.path}/table`}>Tabelle</Link></Menu.Item>
                                    <Menu.Item key="8"><Link to={`${this.props.match.path}/message`}>Nachricht</Link></Menu.Item>
                                </Untermenü>
                                <SubMenu key="sub3" icon={<NotificationOutlined />} title="subnav 3">
                                    <Menu.Item key="9"><Link to={`${this.props.match.path}/notification`}>Benachrichtigung</Link></Menu.Item>
                                    <Menu.Item key="10"><Link to={`${this.props.match.path}/progress`}>ProgressCom</Link></Menu.Item>
                                    <Menu.Item key="11"><Link to={`${this.props.match.path}/spin`}>Drehen</Link></Menu.Item>
                                    <Menu.Item key="12"><Link to={`${this.props.match.path}/badge`}>Abzeichen</Link></Menu.Item>
                                    <Menu.Item key="13"><Link to={`${this.props.match.path}/button`}>Schaltfläche</Link></Menu.Item>
                                </Untermenü>
                            </Menü>
                        </Sider>
                        <Layoutstil={{ padding: '84px 20px 20px', marginLeft: 200}}>
                            <Inhalt
                                Klassenname = "Site-Layout-Hintergrund"
                                Stil={{
                                    Polsterung: 24,
                                    Marge: 0
                                }}
                            >
                                <Routenpfad={`${this.props.match.path}/admin`} genaue Komponente={Admin}></Route>
                                <Routenpfad={`${this.props.match.path}/form`} Komponente={FormCom}></Route>
                                <Routenpfad={`${this.props.match.path}/one`} Komponente={One}></Route>
                                <Routenpfad={`${this.props.match.path}/menu`} Komponente={MenuCom}></Route>
                                <Routenpfad={`${this.props.match.path}/step`} Komponente={StepsCom}></Route>
                                <Routenpfad={`${this.props.match.path}/tabs`} Komponente={TabsCom}></Route>
                                <Routenpfad={`${this.props.match.path}/table`} Komponente={TableCom}></Route>
                                <Routenpfad={`${this.props.match.path}/message`} Komponente={MessageCom}></Route>
                                <Routenpfad={`${this.props.match.path}/notification`} Komponente={NotificationCom}></Route>
                                <Routenpfad={`${this.props.match.path}/progress`} Komponente={ProgressCom}></Route>
                                <Routenpfad={`${this.props.match.path}/spin`} Komponente={SpinCom}></Route>
                                <Routenpfad={`${this.props.match.path}/badge`} Komponente={BadgeCom}></Route>
                                <Routenpfad={`${this.props.match.path}/button`} Komponente={ButtonCom}></Route>
                            </Inhalt>
                        </Layout>
                    </Layout>
                </HashRouter>
            </Layout>
        </div>)
    }
}

In

${this.props.match.path}

ist der Schlüssel.

2. Angenommen, es gibt auch eine Anmeldekomponente Login.js. Der Code lautet wie folgt:

React von „react“ importieren
importiere { Button } von 'antd';

exportiere Standardklasse Login erweitert React.Component {
    Konstruktor() {
        super();
    }

    Umleitungshandle = () => {
        Konsole.log("aaa");
        diese.props.history.push("/home");
    }

    rendern() {
        return (<Button type="primary" onClick={()=>this.redirectHandle()}>Primärer Button</Button>)
    }
}

Vorausgesetzt, das React-Projekt wurde mit einem React-Scaffolding erstellt, legen Sie die Route in der Datei App.js im Verzeichnis src fest:

  rendern() {
    return (<HashRouter>
      <Schalter>
        <Route exact={true} path="/login" component={Login} />
        <Routenpfad="/home" Komponente={Erste} />
        <Redirect to='/login' /> {Andere Routen als /*/login und /home springen direkt zu /login*/}
      </Schalter>
    </HashRouter>)
  }

Der vollständige Code von App.js lautet wie folgt:

importiere React von „react“;
importiere {Benachrichtigung} von 'antd'
importiere { HashRouter, Route, Switch, Redirect } von „react-router-dom“;
importiere First aus „./First“;
Login aus „./Login“ importieren;
importiere './App.css';

Klasse App erweitert React.Component {
  Konstruktor() {
    super();
    this.openNotificationWithIcon = Typ => {
      Benachrichtigung[Typ]({
        Nachricht: 'Benachrichtigungstitel',
        Beschreibung:
          'Dies ist der Inhalt der Benachrichtigung. Dies ist der Inhalt der Benachrichtigung. Dies ist der Inhalt der Benachrichtigung.',
      });
    }
  }

  KlickHandle() {
    console.log("geklickt!!!");
  }

  rendern() {
    return (<HashRouter>
      <Schalter>
        <Route exact={true} path="/login" component={Login} /> {/**exact verhindert gemischte Routen, wie zum Beispiel: input 127.xx.xx.xx/home enthält die /login-Seite*/}
        <Routenpfad="/home" Komponente={Erste} />
        <Weiterleitung zu='/login' />
      </Schalter>
    </HashRouter>)
  }
}

Standard-App exportieren;

Die Projektverzeichnisstruktur ist wie folgt:

Der Projektvorschaueffekt ist wie folgt:

Dies ist das Ende dieses Artikels über die Implementierung von React-Konfigurationsunterrouten. Weitere relevante Inhalte zu React-Konfigurationsunterrouten finden Sie in den vorherigen Artikeln von 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:
  • Lösung für das 404-Problem bei der direkten Eingabe des Routing-Pfads nach der Konfiguration der React-Projekt-URL in Nginx
  • Zusammenfassung der Routing-Konfigurationsmethode von React-Router v4
  • Detaillierte Erläuterung der React-Routing-Konfiguration

<<:  Beispiel für die reguläre Umschreibmethode für Nginx Rewrite (Matching)

>>:  Zusammenfassung von vier Situationen gemeinsamer Abfragen zwischen zwei Tabellen in MySQL

Artikel empfehlen

WeChat-Applet implementiert Suchfunktion und springt zur Suchergebnisseite

Suchseite: search.wxml-Seite: <view class=&quo...

Detaillierte Erklärung des MySQL-Sicherungsprozesses mit Xtrabackup

Inhaltsverzeichnis 01 Hintergrund 02 Einleitung 0...

Implementierung der Vorschaufunktion mehrerer Bild-Uploads auf HTML-Basis

Ich habe vor kurzem ein Skript zum Hochladen mehr...

Netzwerkkonfiguration des Host Only+NAT-Modus unter VirtualBox

Die Netzwerkkonfiguration des Host Only+NAT-Modus...

So wählen Sie den richtigen MySQL-Datums-/Uhrzeittyp zum Speichern Ihrer Zeit

Beim Erstellen einer Datenbank und Schreiben eine...

Grundlegende Anwendungsbeispiele für benannte Slots in Vue

Vorwort Benannte Slots werden mithilfe des Attrib...

Detaillierte Diskussion der Unterschiede zwischen Schleifen in JavaScript

Inhaltsverzeichnis Vorwort Aufzählbare Eigenschaf...

MySQL 8.0.20 Installations-Tutorial mit Bildern und Text (Windows 64-Bit)

1: Download von der offiziellen MySQL-Website htt...

So verwenden Sie mysqldump zum Sichern von MySQL-Daten

1. Einführung in mysqldump mysqldump ist ein logi...

SQL-Übung: Produktkategorie-Datenoperation in der Online-Shopping-Datenbank

Datenbank für Online-Einkaufszentren - Produktkat...

Über gutes Design

<br />Auf zehntausend Personen, die die Frag...

Das Raster ist Ihr Layoutplan für die Seite

<br /> Englisches Original: http://desktoppu...