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

Detaillierte Erläuterung des MySql-Beispiels für automatische Kürzung

Detaillierte Erläuterung des MySql-Beispiels für ...

Ein Vergleich zwischen dem href-Attribut und dem onclick-Ereignis des a-Tags

Lassen Sie uns zunächst über die Ausführungsreihe...

Informationen zur Verwendung der Vue v-on-Direktive

Inhaltsverzeichnis 1. Auf Ereignisse achten 2. Üb...

So übertragen Sie Dateien zwischen Windows und Linux

Dateiübertragung zwischen Windows und Linux (1) V...

Detaillierte Erklärung zur korrekten Verwendung der Zählfunktion in MySQL

1. Beschreibung Wenn wir in MySQL die Gesamtzahl ...

js realisiert die Bildschneidefunktion

In diesem Artikelbeispiel wird der spezifische Co...

Der Prozess der Installation von MySQL 8.0.26 auf CentOS7

1. Laden Sie zunächst die entsprechende Datenbank...

So zeigen Sie die MySQL-Zeitzone an und legen sie fest

1. Überprüfen Sie die Zeitzone der Datenbank Vari...

Tipps zur Datenstatistik in MySQL

Als häufig verwendete Datenbank erfordert MySQL v...