Inhaltsverzeichnis
Die Navigationsfunktion ist für jede App unverzichtbar
2. Der Zieleffekt, der dieses Mal erreicht werden soll
3. Vorläufige Erkundung der React-Navigation mit TabNavigator
1. Installation
2. Routing-Konfiguration
3. Vorläufige Untersuchung der Reaktionsnavigation mit StackNavigator, um zur sekundären Seite zu springen
Heim Web-Frontend js-Tutorial Wie erstelle ich eine Navigation in React-Native? Details zur Produktion der reaktiven Navigationsleiste (vollständiger Code im Anhang)

Wie erstelle ich eine Navigation in React-Native? Details zur Produktion der reaktiven Navigationsleiste (vollständiger Code im Anhang)

Sep 11, 2018 pm 02:27 PM
android react-native

Dieser Artikel stellt hauptsächlich die Funktionen der react-nativen Navigation vor und wie man sie verwendet, um sie navigierbar zu machen. Dann lesen Sie den folgenden Artikel

Die Navigationsfunktion ist für jede App unverzichtbar

Wir wissen, dass unabhängig davon, ob es sich um das Umschalten mit der unteren Taste oder um einen Seitensprung handelt, sie gemeinsam als Navigationsfunktionen bezeichnet werden. Mit diesen Funktionen entsteht eine vollständige App. Das Grundgerüst entsteht , und dann kann das gesamte Skelett mit Geschäftslogik gefüllt werden. In React-Native hat Facebook jedoch auch Navigationskomponenten eingeführt. Die Leistung komplexer Geschäftslogik ist jedoch relativ gering, sodass die Navigationskomponente React-Navigation geboren wurde , und Facebook hat auch die Verwendung dieser Komponente empfohlen. Es ist ersichtlich, dass diese Komponente hauptsächlich über drei Kernfunktionskomponenten verfügt: TabNavigator, StackNavigator und DrawerNavigation. Schubladeneffekt (seitliches Schiebemenü), heute werden nur die ersten beiden Komponenten erfasst.

2. Der Zieleffekt, der dieses Mal erreicht werden soll

Wie erstelle ich eine Navigation in React-Native? Details zur Produktion der reaktiven Navigationsleiste (vollständiger Code im Anhang)Wie erstelle ich eine Navigation in React-Native? Details zur Produktion der reaktiven Navigationsleiste (vollständiger Code im Anhang)

Der Effekt, der dieses Mal erreicht werden soll, sind die beiden obigen Screenshots Screenshots am unteren Rand der Hauptoberfläche. Eine Registerkarte zum Umschalten der Navigation der Hauptoberfläche. Die Homepage-Simulation bietet einen Zugang zur sekundären Seite und zum zweiten Screenshot-Effekt. Verwenden Sie als Nächstes Code, um ihn zu implementieren.

3. Vorläufige Erkundung der React-Navigation mit TabNavigator

1. Installation

Installation: npm install –react-navigation -save

Überprüfen Sie nach der Installation den Wert, der den Abhängigkeiten in der Datei package.json entspricht. Es gibt einen zusätzlichen Schlüsselwert, der der React-Navigation und der Versionsnummer entspricht:
Wie erstelle ich eine Navigation in React-Native? Details zur Produktion der reaktiven Navigationsleiste (vollständiger Code im Anhang)Sie können auch React-In einchecken Wenn Sie den Ordner node_modules im Stammverzeichnis des Navigationskomponentenpakets haben, können Sie grundsätzlich sicher sein, dass die Installation erfolgreich ist.

2. Routing-Konfiguration

Ich persönlich denke, dass die Tab-Navigation in RN einfacher zu bedienen ist, als dass RN das Seitenwechselziel für jeden Tab selbst konfigurieren muss Nachdem das Grundgerüst konfiguriert ist, können wir es zunächst überall verwenden. (Wenn Sie mehr sehen möchten, besuchen Sie die Spalte React Reference Manual der PHP Chinese-Website, um mehr zu erfahren)

Schnittstellenanalyse:

  1. Drei Tab-Schaltflächen unten (implementiert mit TabNavigator)

  2. Jeder Tab entspricht drei verschiedenen Seiten (drei Seiten müssen vorbereitet werden)

Basierend auf der obigen einfachen Analyse erstellen wir zunächst drei Seiten, die ich wie folgt benannt habe: MainPage, SettingPage und MinePage, die entsprechen: Home Page, Settings und My .

MainPage.js

import React, { Component } from 'react';
import {
    AppRegistry,
    StyleSheet,
    Text,
    Image,
    View,
    TouchableOpacity
} from 'react-native';
export default class MinePage extends Component {
    // 此处设置 Tab 的名称和一些样式,这里的会覆盖掉配置路由文件的样式,下面会讲
    static navigationOptions = {
        headerTitle: '首页',
        tabBarLabel: '首页',
        tabBarIcon:<Image style={{height: 30, width: 30}}
                          source={require(&#39;./ic_tab_mine.png&#39;)}/>
    };
    render() {        const { navigate } = this.props.navigation;        return (
            <View style={styles.container}>
                <Text>首页界面</Text>
            </View>
        );
    }
}const styles = StyleSheet.create({
    container: {
        flex: 1,
        backgroundColor: &#39;#F5FCFF&#39;,
    },
});
Nach dem Login kopieren

Und so weiter für die anderen beiden Seiten.

Nachdem die Seite vorbereitet ist, erstellen Sie die Tab-Navigationsrouting-Konfigurationsdatei und benennen Sie sie: MyNavigators.js

import React from &#39;react&#39;;
import {StackNavigator, TabNavigator} from &#39;react-navigation&#39;;
import MainPage from &#39;../pages/MainPage&#39;;   // 首页import SettingPage from &#39;../pages/SettingPage&#39;;   // 设置页面import MinePage from &#39;../pages/MinePage&#39;;          // 我的页面import DetailsPage from &#39;../pages/DetailsPage&#39;;     // 详情页// 注册tabsconst Tabs = TabNavigator({
    Home: {
        screen: MainPage,
    },
    Set: {
        screen: SettingPage,
    },
    Me: {
        screen: MinePage,
    }
}, {
    animationEnabled: false, // 切换页面时是否有动画效果
    tabBarPosition: &#39;bottom&#39;, // 显示在底端,android 默认是显示在页面顶端的
    swipeEnabled: false, // 是否可以左右滑动切换tab
    backBehavior: &#39;none&#39;, // 按 back 键是否跳转到第一个Tab(首页), none 为不跳转
    tabBarOptions: {
        activeTintColor: &#39;#ff8500&#39;, // 文字和图片选中颜色
        inactiveTintColor: &#39;#999&#39;, // 文字和图片未选中颜色
        showIcon: true, // android 默认不显示 icon, 需要设置为 true 才会显示
        indicatorStyle: {
            height: 0  // 如TabBar下面显示有一条线,可以设高度为0后隐藏
        },
        style: {
            backgroundColor: &#39;#fff&#39;, // TabBar 背景色
        },
        labelStyle: {
            fontSize: 14, // 文字大小
        },
    },
});
export default StackNavigator({
        Main: {
            screen: Tabs
        },
        DetailsPage: { // 详情页
            screen: DetailsPage
        },
    },
    {
        headerMode: &#39;screen&#39;,  // 标题导航
        initialRouteName: &#39;Main&#39;, // 默认先加载的页面组件
        mode: &#39;modal&#39;       // 定义跳转风格(card、modal)
    });
Nach dem Login kopieren

Registrieren Sie TabNavigator, um zwei Parameter zu erhalten (Tab Zielseite, einige Tab-Stile) , die Zielseite kann nach der Vorbereitung importiert und der Stil nach Bedarf definiert werden.

Konfigurieren Sie die StackNavigator-Routingfunktion für Seitenkomponenten. Beachten Sie, dass hier alle Seitenkomponenten in der App konfiguriert werden müssen, genau wie die Registrierung aller Aktivitäten in der Manifestdatei in Android.

Nochmals beachten: Als Gesamtkomponente sollte Tab hier alle entsprechenden Seiten in Form von Seitenkomponenten konfigurieren.

Um die Lesbarkeit der Projektcodelogik zu verbessern, habe ich zunächst eine separate App.js-Datei erstellt und dann die gerade erstellte Routing-Komponente separat eingefügt.

import React, {Component} from &#39;react&#39;;import MyNavigators from &#39;./src/navigators/MyNavigators&#39;;
export default class App extends Component {
    render() {        return (            // 路由组件
            <MyNavigators/>
        );
    }
}
Nach dem Login kopieren

Ändern Sie die Datei index.js, um die Datei App.js zu laden, nachdem das Programm gestartet wurde.

import { AppRegistry } from &#39;react-native&#39;;import App from &#39;./App&#39;;
AppRegistry.registerComponent(&#39;AbcAPP&#39;, () => App);
Nach dem Login kopieren

Führen Sie nun das Programm aus und Sie werden sehen, dass die untere Navigationsregisterkarte geladen wurde.

3. Vorläufige Untersuchung der Reaktionsnavigation mit StackNavigator, um zur sekundären Seite zu springen

Solange die Komponente in StackNavigator registriert ist, verfügt sie über dieses Attribut Navigation und es gibt eine Navigation (str, prm) in dieser Attributmethode ist der erste Parameter der Name der Zielkomponente (Der Name ist ein benutzerdefinierter Name, der in der Routing-Konfigurationsdatei registriert ist. Verwechseln Sie ihn nicht mit dem Dateinamen ) Der zweite Parameter kann übergeben werden oder nicht. Wenn zwei Seitenkomponenten kommunizieren müssen, beispielsweise beim Springen mit Parametern, können Sie den zweiten Parameter verwenden, um den Wert im Schlüsselwertformat zu übergeben. Das Rendering sieht beispielsweise wie folgt aus:

MainPage.js-Datei

import React, { Component } from &#39;react&#39;;
import {
    StyleSheet,
    Text,
    View,
    Image,
    TouchableOpacity
} from &#39;react-native&#39;;
export default class MainPage extends Component {
    static navigationOptions = {        // headerTitle:&#39;首页&#39;,
        tabBarLabel: &#39;首页&#39;,        // headerTitleStyle:{
        //     fontSize:18,
        //     fontWeight:&#39;400&#39;,
        //     alignSelf:&#39;center&#39;,
        // },
        headerStyle: {
            height: 0, //去掉标题
        },
        tabBarIcon:<Image style={{height: 30, width: 30}}
                          source={require(&#39;./ic_tab_mine.png&#39;)}/>
    };
    render() {        // 获取 navigate 属性
        const { navigate } = this.props.navigation;        return (
            <View style={styles.container}>                // 跳转到详情页,并传递两个数据 title、des。
                <TouchableOpacity style={{width:200,height: 50, backgroundColor: &#39;red&#39;, borderRadius:5,justifyContent: &#39;center&#39;, alignItems: &#39;center&#39;}}
                                  onPress={() => navigate(&#39;DetailsPage&#39;, { title: &#39;详情页&#39;,des:&#39;回到上一页&#39; })} >
                    <Text style={{color:"#FFF"}}>点击查看详情</Text>
                </TouchableOpacity>
            </View>
        );
    }
}const styles = StyleSheet.create({
    container: {
        flex: 1,
        backgroundColor: &#39;#F5FCFF&#39;,
        justifyContent: &#39;center&#39;,
        alignItems: &#39;center&#39;
    },
});
Nach dem Login kopieren

DetailsPage.js-Datei (denken Sie daran, die Detailseitenkomponente in MyNavigators.js zu registrieren)

import React, {Component} from &#39;react&#39;;
import {
    StyleSheet,
    Text,
    View,
    TouchableOpacity
} from &#39;react-native&#39;;
export default class DetailsPage extends Component {
    //接收上一个页面传过来的title显示出来
    static navigationOptions = ({navigation}) => ({
        headerTitle: navigation.state.params.title,
        headerTitleStyle:{
            fontSize:18,
            fontWeight:&#39;400&#39;,
            alignSelf:&#39;center&#39;
        },
        headerStyle: {height: 65, backgroundColor: &#39;#FFF&#39;},
        headerRight: <View><Text style={{paddingRight: 14, color: &#39;#000&#39;, fontSize: 18}}>编辑</Text></View>,
        headerBackTitle: &#39;回去&#39;,
        headerTruncatedBackTitle: &#39;返回&#39;
    });    // 点击返回上一页方法
    backFunction= () => {        //返回首页方法 navigation属性中的自带的返回方法
        this.props.navigation.goBack();
    }
    render() {        return (
            <View style={styles.container}>
                <TouchableOpacity
                    style={{width:200,height: 50, backgroundColor: &#39;green&#39;, borderRadius:5,justifyContent: &#39;center&#39;, alignItems: &#39;center&#39;}}
                    onPress={() => {                        this.backFunction()
                    }}>
                    <Text style={{color:"#FFF"}}>{this.props.navigation.state.params.des}</Text>
                </TouchableOpacity>
            </View>
        );
    }
}
const styles = StyleSheet.create({    container: {
        flex: 1,
        backgroundColor: &#39;#F5FCFF&#39;,
        alignItems:&#39;center&#39;,
        justifyContent:&#39;center&#39;
    },
});
Nach dem Login kopieren

Verwenden Sie nach der Aufnahme die oben genannten Die erhaltenen Attributwerte, Stile usw. können online in Baidu gespeichert werden. Abschließend wird das Projektstrukturverzeichnis angegeben:

Wie erstelle ich eine Navigation in React-Native? Details zur Produktion der reaktiven Navigationsleiste (vollständiger Code im Anhang)

Dieser Artikel endet hier (wenn Sie mehr sehen möchten, besuchen Sie die Spalte „React User Manual“ der PHP-Website, um mehr zu erfahren. Wenn Sie Fragen haben, können Sie unten eine Nachricht hinterlassen).

Das obige ist der detaillierte Inhalt vonWie erstelle ich eine Navigation in React-Native? Details zur Produktion der reaktiven Navigationsleiste (vollständiger Code im Anhang). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Neuer Bericht liefert eine vernichtende Einschätzung der angeblichen Kamera-Upgrades für das Samsung Galaxy S25, Galaxy S25 Plus und Galaxy S25 Ultra Neuer Bericht liefert eine vernichtende Einschätzung der angeblichen Kamera-Upgrades für das Samsung Galaxy S25, Galaxy S25 Plus und Galaxy S25 Ultra Sep 12, 2024 pm 12:23 PM

In den letzten Tagen hat Ice Universe immer wieder Details zum Galaxy S25 Ultra enthüllt, von dem allgemein angenommen wird, dass es das nächste Flaggschiff-Smartphone von Samsung ist. Der Leaker behauptete unter anderem, Samsung plane nur ein Kamera-Upgrade

Beim Samsung Galaxy S25 Ultra sind erste Renderbilder durchgesickert und Gerüchte über Designänderungen wurden enthüllt Beim Samsung Galaxy S25 Ultra sind erste Renderbilder durchgesickert und Gerüchte über Designänderungen wurden enthüllt Sep 11, 2024 am 06:37 AM

OnLeaks hat sich nun mit Android Headlines zusammengetan, um einen ersten Blick auf das Galaxy S25 Ultra zu werfen, nur wenige Tage nach dem gescheiterten Versuch, mehr als 4.000 US-Dollar von seinen X-Followern (ehemals Twitter) zu generieren. Für den Kontext sind die unten eingebetteten Renderbilder h

IFA 2024 | Das NXTPAPER 14 von TCL wird in der Leistung nicht mit dem Galaxy Tab S10 Ultra mithalten können, in der Größe aber fast IFA 2024 | Das NXTPAPER 14 von TCL wird in der Leistung nicht mit dem Galaxy Tab S10 Ultra mithalten können, in der Größe aber fast Sep 07, 2024 am 06:35 AM

Neben der Ankündigung zweier neuer Smartphones hat TCL auch ein neues Android-Tablet namens NXTPAPER 14 angekündigt, dessen riesige Bildschirmgröße eines seiner Verkaufsargumente ist. Das NXTPAPER 14 verfügt über Version 3.0 der matten LCD-Panels der Signaturmarke von TCL

Das Vivo Y300 Pro bietet einen 6.500-mAh-Akku in einem schlanken 7,69-mm-Gehäuse Das Vivo Y300 Pro bietet einen 6.500-mAh-Akku in einem schlanken 7,69-mm-Gehäuse Sep 07, 2024 am 06:39 AM

Das Vivo Y300 Pro wurde gerade vollständig vorgestellt und ist eines der schlanksten Mittelklasse-Android-Telefone mit einem großen Akku. Genauer gesagt ist das Smartphone nur 7,69 mm dick, verfügt aber über einen 6.500 mAh starken Akku. Dies ist die gleiche Kapazität wie bei der kürzlich eingeführten Version

Das Samsung Galaxy S24 FE soll in vier Farben und zwei Speicheroptionen für weniger als erwartet auf den Markt kommen Das Samsung Galaxy S24 FE soll in vier Farben und zwei Speicheroptionen für weniger als erwartet auf den Markt kommen Sep 12, 2024 pm 09:21 PM

Samsung hat noch keine Hinweise darauf gegeben, wann es seine Smartphone-Serie Fan Edition (FE) aktualisieren wird. Derzeit ist das Galaxy S23 FE nach wie vor die jüngste Ausgabe des Unternehmens und wurde Anfang Oktober 2023 vorgestellt

Neuer Bericht liefert eine vernichtende Einschätzung der angeblichen Kamera-Upgrades für das Samsung Galaxy S25, Galaxy S25 Plus und Galaxy S25 Ultra Neuer Bericht liefert eine vernichtende Einschätzung der angeblichen Kamera-Upgrades für das Samsung Galaxy S25, Galaxy S25 Plus und Galaxy S25 Ultra Sep 12, 2024 pm 12:22 PM

In den letzten Tagen hat Ice Universe immer wieder Details zum Galaxy S25 Ultra enthüllt, von dem allgemein angenommen wird, dass es das nächste Flaggschiff-Smartphone von Samsung ist. Der Leaker behauptete unter anderem, Samsung plane nur ein Kamera-Upgrade

Xiaomi Redmi Note 14 Pro Plus erscheint als erstes Qualcomm Snapdragon 7s Gen 3 Smartphone mit Light Hunter 800 Kamera Xiaomi Redmi Note 14 Pro Plus erscheint als erstes Qualcomm Snapdragon 7s Gen 3 Smartphone mit Light Hunter 800 Kamera Sep 27, 2024 am 06:23 AM

Das Redmi Note 14 Pro Plus ist nun offiziell als direkter Nachfolger des letztjährigen Redmi Note 13 Pro Plus (aktuell 375 $ bei Amazon) erhältlich. Wie erwartet steht das Redmi Note 14 Pro Plus neben dem Redmi Note 14 und dem Redmi Note 14 Pro an der Spitze der Redmi Note 14-Serie. Li

iQOO Z9 Turbo Plus: Die Reservierungen für das möglicherweise aufgepeppte Serien-Flaggschiff beginnen iQOO Z9 Turbo Plus: Die Reservierungen für das möglicherweise aufgepeppte Serien-Flaggschiff beginnen Sep 10, 2024 am 06:45 AM

Die Schwestermarke von OnePlus, iQOO, hat einen Produktzyklus von 2023 bis 2024, der möglicherweise fast abgeschlossen ist. Dennoch hat die Marke erklärt, dass sie mit ihrer Z9-Serie noch nicht fertig sei. Seine letzte und möglicherweise hochwertigste Turbo+-Variante wurde gerade wie vorhergesagt angekündigt. T

See all articles