ReactNative入门(二)——导航和路由

2023-11-10

React Navigation官方文档:https://reactnavigation.org/docs/getting-started/

安装react-navigation:

npm install @react-navigation/native

npx yarn add @react-navigation/native

在这里插入图片描述

安装react-native-screens和react-native-safe-area-context:

npm install react-native-screens react-native-safe-area-context

npx yarn add react-native-screens react-native-safe-area-context

在这里插入图片描述
安装native stack:

npx yarn add @react-navigation/native-stack

使用方法:

创建ui文件夹,并创建两个页面PageOne和PageTwo以测试跳转:

在这里插入图片描述

修改APP.js:

import React from 'react';
import { NavigationContainer } from '@react-navigation/native';
import { createNativeStackNavigator } from '@react-navigation/native-stack';

import PageOne from './ui/PageOne';
import PageTwo from './ui/PageTwo';

const Stack = createNativeStackNavigator();

const App = () => {
  return (
    <NavigationContainer>
      <Stack.Navigator>
        <Stack.Screen name="PageOne" component={PageOne} />
        <Stack.Screen name="PageTwo" component={PageTwo} />
      </Stack.Navigator>
    </NavigationContainer>
  );
}

export default App;

PageOne.js:

import React from "react";
import {
    SafeAreaView,
    StatusBar,
    StyleSheet,
    Text,
    View,
} from 'react-native';

export default class PageOne extends React.Component {

    constructor(props) {
        super(props);
    }

    toPageTwo() {
        this.props.navigation.navigate('PageTwo');
    }

    render() {
        return (
            <SafeAreaView>
                <StatusBar barStyle='dark-content' backgroundColor='#fff' />
                <View style={styles.container}>
                    <Text style={{ color: '#000', fontSize: 30, fontWeight: 'bold' }} onPress={() => this.toPageTwo()}>PageOne</Text>
                </View>
            </SafeAreaView>
        );
    }
}

const styles = StyleSheet.create({
    container: {
        flexDirection: 'column',
        alignItems: 'center',
        justifyContent: 'center',
        backgroundColor: '#fff',
        height: '100%',
        width: '100%'
    }
});

PageTwo.js:

import React from "react";
import {
    SafeAreaView,
    StatusBar,
    StyleSheet,
    Text,
    View,
} from 'react-native';

export default class PageTwo extends React.Component {

    constructor(props) {
        super(props);
    }

    render() {
        return (
            <SafeAreaView>
                <StatusBar barStyle='dark-content' backgroundColor='#fff' />
                <View style={styles.container}>
                    <Text style={{ color: '#000', fontSize: 30, fontWeight: 'bold' }}>PageTwo</Text>
                </View>
            </SafeAreaView>
        );
    }
}

const styles = StyleSheet.create({
    container: {
        flexDirection: 'column',
        alignItems: 'center',
        justifyContent: 'center',
        backgroundColor: '#fff',
        height: '100%',
        width: '100%'
    }
});

在这里插入图片描述
跳转主要方法:

this.props.navigation.navigate('PageTwo');

‘PageTwo’ 即你在App.js中的Stack.Screen中定义的name!

传参:

 this.props.navigation.navigate('PageTwo',{'data':'test'});

目标页面通过props.route.params接收:

    constructor(props) {
        super(props);
        console.log("props>>" + JSON.stringify(props));
        console.log("data>>" + props.route.params.data);
    }

在这里插入图片描述

考虑到你可能要自定义导航栏,希望隐藏默认导航栏,这当然可以实现,只需要隐藏导航栏即可:

<Stack.Screen name="PageOne" component={PageOne} options={{ headerShown: false }} />
<Stack.Screen name="PageTwo" component={PageTwo} options={{ headerShown: false }} />

如果你需要底部bottomTab,你可以安装 @react-navigation/bottom-tabs:

const Tab = createBottomTabNavigator();

export default function App() {
  return (
    <NavigationContainer>
      <Tab.Navigator>
        <Tab.Screen name="Home" component={HomeScreen} />
        <Tab.Screen name="Settings" component={SettingsScreen} />
      </Tab.Navigator>
    </NavigationContainer>
  );
}

在这里插入图片描述

当然,它是支持图标自定义的,包括使用bottomTab时页面路由配置,官方文档上都是非常详细的了:
https://reactnavigation.org/docs/tab-based-navigation

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ReactNative入门(二)——导航和路由 的相关文章

随机推荐

  • 【char类型转换】

    文章目录 前言 经典例题 典例1 变式1 典例2 总结 前言 今天我们一起来了解一下关于整形提升和进制转换的问题 经典例题 典例1 计算下面程序打印的结果 include
  • 牛客网算法教程-中级篇-第一章

    文章目录 学习目标 学习内容 学习时间 学习产出 1 旋转词 模拟 2 旋转矩阵 模拟 3 数轴覆盖 贪心 4 1 完整字符串1 括号字符串的有效性 栈 4 2 完整字符串2 缺失的括号 栈 4 3 完整字符串3 最长合法括号子串 栈 5
  • vue项目中使用http-proxy-middleware解决前端开发中跨域的问题

    使用方式 1 安装 npm install http proxy middleware save dev 2 使用 一般的使用 新建js文件 在此小编命名为proxy js const proxy require http proxy mi
  • rust输入输出

    一 获取命令行参数 很多语言获取命令行参数 是通过主函数的参数获得的 但Rust主函数是个无参数函数 命令行参数只能通过std env args 函数获得 std env args 返回一个迭代器 其中包含了程序名和后面所有参数 实例 fn
  • android 弹出选择框,简单通用弹出选择框

    LinearLayout ll LinearLayout getActivity findViewById R id log sel qyport ll setOnClickListener new View OnClickListener
  • windows输出文件的树状结构

    场景 今天突然看到同事的项目里面有一个文件 类型这样 项目的一个树状图 以前也看见过但是从来没有探究过 今天来看一下 描述 提示 需要windows 系统 其他系统需要安装tree windows系统下 我们可以打开我们的一个项目 在红框内
  • 传奇DBC数据库变量详细解释传奇DB文件详解

    传奇DBC数据DB文件详解 MagicDB MagicDB 是你所修炼的法术和各种技能 1 MagID 技能代号 2 MagName 技能名称 3 Effect Type 效果类型 使用技能时角色的动作效果 4 Effect 效果 技能产生
  • 【C++|排序算法】冒泡、快排、归并、堆排序算法模版

    目录 简介 冒泡排序 快速排序 归并排序 堆排序 结语 简介 Hello 非常感谢您阅读海轰的文章 倘若文中有错误的地方 欢迎您指出 昵称 海轰 标签 程序猿 C 选手 学生 简介 因C语言结识编程 随后转入计算机专业 获得过国家奖学金 有
  • 计算机操作系统--基础篇

    操作系统的演进 多道程序设计 早期批处理系统只能一次处理一个任务 多道程序设计使得批处理系统可以一次处理多个任务 多道程序设计是指在计算机内存中同时存放多个程序 多道程序在计算机的管理程序之下相互穿插运行 多道程序的管理是操作系统的重要功能
  • Security-Onion-Solutions安全洋葱安装方法

    Security Onion Solutions安全洋葱安装方法 securityonion安全洋葱介绍 安全洋葱是一款开源的入侵检测系统 集成了日志分析 流量分析安全告警如 Grafana TheHive Playbook Fleet O
  • 怎么访问服务器网站根目录,如何访问网站根目录

    如何访问网站根目录 内容精选 换一换 根据 互联网信息服务管理办法 非经营性互联网信息服务备案管理办法 等法律法规的规定 国家对经营性互联网信息服务实行许可制度 对非经营性互联网信息服务实行备案制度 未取得许可或者未履行备案手续 不得指向中
  • labview串口,网口,DSC可用OPC通讯链接三菱欧姆龙西门子等PLC

    labview串口 网口 DSC可用OPC通讯链接三菱欧姆龙西门子等PLC 需要的取 可帮助使用 通过NI OPC控制三菱 欧姆龙西门子等各种型号PLC ID 4450645066968702
  • 余光中:书斋·书灾

    本文转载至 http www yuwenonline com Item 1577 aspx 物以类聚 我的朋友大半也是书呆了 很少有朋友约我去户外恋爱春天 大半的时间 我总是与书为伍 大半的时间 总是把自己关在六叠之上 四壁之中 制造氮气
  • 在阿里6年,但今年这情况,劝大家还是多一手准备吧

    大家期待的经济繁荣 没有来 往年的金三银四 跳槽涨薪 也没有来 来了的 是大公司裁员的消息频频爆出 来了的 是ChatGPT 第一批受到影响的人已经失业了 而且你有没有发现 它平时没什么声音 但每次一发布更新 就是一个重磅炸弹 真的 不知道
  • Unity3D独立游戏开发日记(一):动态生成树木

    目前写的独立游戏是一个沙盒类型的游戏 游戏DEMO视频如下 提到沙盒类型的游戏 就有人给出了这样的定义 游戏世界离现实世界越近 自由度 随机度越高才叫沙盒游戏 所谓自由度 就是你在游戏里想干啥就干啥 想开车就开车 想走路就走路 想盖房子就盖
  • QT release版虚拟键盘无反应

    1 在main Cpp 加入 int main int argc char argv qputenv QT IM MODULE QByteArray qtvirtualkeyboard 虚拟键盘调用 QApplication a argc
  • 【定点数运算】定点的乘法和加法

    目录 定点的介绍 定点的优势 定点数的乘法和加法 乘法 加法 定点的介绍 在之前的博客中介绍了定点数和浮点数 想要了解的可以前往以下链接 定点和浮点 定点数与浮点数的解释 定点的优势 使用定点表示有什么优势 为什么不简单地将所有值规范化为整
  • android项目嵌入flutter且解决的问题

    1 在android原生根目录下通过运行命令创建flutter module 这种创建与 flutter new project 内部目录结构不一样 所以直接用命令去创建 2 new Binding 如果标识红色报错 那就看看flutter
  • errcode":40001,"errmsg":"invalid credential, access_token is invalid or not latest hint

    微信access token 在一个地方获取了 同一个公众号其它地方获取的access token 都会失效 就会出现标题中的错误 这个原因可能大家都知道 但是排除的时候可能不好排除 我找了一上午在系统里面 都没有找到 因为自己负责的系统全
  • ReactNative入门(二)——导航和路由

    React Navigation官方文档 https reactnavigation org docs getting started 安装react navigation npm install react navigation nati