随着RN和reactnavigation的版本更新,网上很多老版的例子都不能用了。

自己摸索着跑通了一些简单的功能。

使用的是最新的    "react-native": "0.61.5", reactnavigation版本是 5.x ,reactnavigation的官网是https://reactnavigation.org/ 。打开很慢很慢很慢。。。。不过可以参考。

两个页面切换的例子:

import * as React from 'react';
import {NavigationContainer} from '@react-navigation/native';
import {createStackNavigator} from '@react-navigation/stack';
import {
AppRegistry,
StyleSheet,
Text,
View,Button
} from 'react-native'; const Stack = createStackNavigator(); function HomeScreen({navigation}) {
return (
<Button
title="Go to Jane's profile"
onPress={() => navigation.navigate('Profile', {name: 'Jane'})}
/>
);
} function Profile({navigation}) {
return (
<Button
title="Go to Home"
onPress={() => navigation.navigate('Home', {name: 'Home'})}
/>
);
} export default function App() {
return (
<NavigationContainer>
<Stack.Navigator>
<Stack.Screen
name="Home"
component={HomeScreen}
options={{title: 'Welcome'}}
/>
<Stack.Screen name="Profile" component={Profile} />
</Stack.Navigator>
</NavigationContainer>
);
}

简单的tabtab页切换:

import * as React from 'react';
import { Text, View } from 'react-native';
import { NavigationContainer } from '@react-navigation/native';
import { createBottomTabNavigator } from '@react-navigation/bottom-tabs'; function HomeScreen() {
return (
<View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
<Text>Home!</Text>
</View>
);
} function SettingsScreen() {
return (
<View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
<Text>Settings!</Text>
</View>
);
} 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>
);
}

带图标的两个tab导航切换

import * as React from 'react';
import { Button, Text, View,StyleSheet,Image } from 'react-native';
import { NavigationContainer } from '@react-navigation/native';
import { createStackNavigator } from '@react-navigation/stack';
import { createBottomTabNavigator } from '@react-navigation/bottom-tabs'; function DetailsScreen() {
return (
<View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
<Text>Details!</Text>
</View>
);
} function HomeScreen({ navigation }) {
return (
<View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
<Text>Home screen</Text>
<Button
title="Go to Details"
onPress={() => navigation.navigate('Details')}
/>
</View>
);
} function SettingsScreen({ navigation }) {
return (
<View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
<Text>setting screen</Text>
<Button
title="Go to Details"
onPress={() => navigation.navigate('Details')}
/>
</View>
);
} const HomeStack = createStackNavigator(); function HomeStackScreen() {
return (
<HomeStack.Navigator>
<HomeStack.Screen name="Home" component={HomeScreen} options={{ headerShown: false }}/>
<HomeStack.Screen name="Details" component={DetailsScreen} />
</HomeStack.Navigator>
);
} const SettingsStack = createStackNavigator(); function SettingsStackScreen() {
return (
<SettingsStack.Navigator>
<SettingsStack.Screen name="Settings" component={SettingsScreen} options={{ headerShown: false }}/>
<SettingsStack.Screen name="Details" component={DetailsScreen} />
</SettingsStack.Navigator>
);
} const Tab = createBottomTabNavigator(); export default function App() {
console.log("aaaaaaaaaaaaaaaaaaaaa");
return (
<NavigationContainer>
<Tab.Navigator
screenOptions={({ route }) => ({
tabBarIcon: ({ focused, color, size }) => {
let iconName; if (route.name === 'Home') {
if(focused){
return (
<Image style={styles.tabBarIcon} source={require('./img/page1_2.png')}/>
);
}else{
return (
<Image style={styles.tabBarIcon} source={require('./img/page1_1.png')}/>
);
} } else if (route.name === 'Settings') {
if(focused){
return (
<Image style={styles.tabBarIcon} source={require('./img/page2_2.png')}/>
);
}else{
return (
<Image style={styles.tabBarIcon} source={require('./img/page2_1.png')}/>
);
} } // You can return any component that you like here! },
})}
tabBarOptions={{
activeTintColor: '#2196f3',
inactiveTintColor: 'gray',
}}
>
<Tab.Screen name="Home" component={HomeStackScreen} options={{ headerShown: false }} />
<Tab.Screen name="Settings" component={SettingsStackScreen} options={{ headerShown: false }}/>
</Tab.Navigator>
</NavigationContainer>
);
} const styles = StyleSheet.create({
container: {
flex: 1,
flexDirection: 'column',
justifyContent: 'center',
alignItems: 'center',
},
tabBarIcon: {
width: 21,
height: 21,
}
});

reactnavigation 5.x简单例子的更多相关文章

  1. Hibernate4.2.4入门(一)——环境搭建和简单例子

    一.前言 发下牢骚,这段时间要做项目,又要学框架,搞得都没时间写笔记,但是觉得这知识学过还是要记录下.进入主题了 1.1.Hibernate简介 什么是Hibernate?Hibernate有什么用? ...

  2. AgileEAS.NET SOA 中间件平台.Net Socket通信框架-简单例子-实现简单的服务端客户端消息应答

    一.AgileEAS.NET SOA中间件Socket/Tcp框架介绍 在文章AgileEAS.NET SOA 中间件平台Socket/Tcp通信框架介绍一文之中我们对AgileEAS.NET SOA ...

  3. spring mvc(注解)上传文件的简单例子

    spring mvc(注解)上传文件的简单例子,这有几个需要注意的地方1.form的enctype=”multipart/form-data” 这个是上传文件必须的2.applicationConte ...

  4. ko 简单例子

    Knockout是在下面三个核心功能是建立起来的: 监控属性(Observables)和依赖跟踪(Dependency tracking) 声明式绑定(Declarative bindings) 模板 ...

  5. mysql定时任务简单例子

    mysql定时任务简单例子 ? 1 2 3 4 5 6 7 8 9     如果要每30秒执行以下语句:   [sql] update userinfo set endtime = now() WHE ...

  6. java socket编程开发简单例子 与 nio非阻塞通道

    基本socket编程 1.以下只是简单例子,没有用多线程处理,只能一发一收(由于scan.nextLine()线程会进入等待状态),使用时可以根据具体项目功能进行优化处理 2.以下代码使用了1.8新特 ...

  7. 一个简单例子:贫血模型or领域模型

    转:一个简单例子:贫血模型or领域模型 贫血模型 我们首先用贫血模型来实现.所谓贫血模型就是模型对象之间存在完整的关联(可能存在多余的关联),但是对象除了get和set方外外几乎就没有其它的方法,整个 ...

  8. [转] 3个学习Socket编程的简单例子:TCP Server/Client, Select

    以前都是采用ACE的编写网络应用,最近由于工作需要,需要直接只用socket接口编写CS的代码,重新学习这方面的知识,给出自己所用到的3个简单例子,都是拷贝别人的程序.如果你能完全理解这3个例子,估计 ...

  9. jsonp的简单例子

    jsonp的简单例子 index.html <!DOCTYPE html> <html> <head> <meta charset="UTF-8&q ...

随机推荐

  1. win10 Redis闪退问题

    问题:双击redis-server.exe,闪退 解决办法:win+R,输入cmd进入命令行模式,接着cd进入Redis安装根目录,再输入:redis-server.exe redis.windows ...

  2. mysql-8.0.19-winx64下载

    mysql-8.0.19-winx64 下载链接 提取码:m7qp

  3. tcp/ip面试题

    TCP协议  1.OSI与TCP/IP各层的结构和功能,协议和作用.     OSI七层模型对应TCP/IP四层模型,只是分法不同而已.     应用层:提供应用层服务,文件传输(FTP),电子邮件( ...

  4. 《闲扯Redis三》Redis五种数据类型之List型

    一.前言 Redis 提供了5种数据类型:String(字符串).Hash(哈希).List(列表).Set(集合).Zset(有序集合),理解每种数据类型的特点对于redis的开发和运维非常重要. ...

  5. nim博弈 LightOJ - 1253

    主要是写一下nim博弈的理解,这个题有点奇怪,不知道为什么判断奇偶性,如果有大佬知道还请讲解一下. //nim博弈 //a[0]~a[i] 异或结果为k 若k=0 则为平衡态 否则为非平衡态 //平衡 ...

  6. windows远程桌面内部错误的处理方法

    远程桌面内部错误的处理方法 1 执行:netsh winsock reset 2 重启网络连接 3 重启远程连接服务 remote Desktop Services 4 关闭连接警告 高级 -> ...

  7. [bzoj4472][树形DP] Salesman

    题目 原地址 解说 刚看完这道题感觉还是挺乱的,可能那时候脑子不太清醒,一度觉得自己又要重拾Tarjan了.当然最后还是发觉应该用树形DP. (以下dp[u]代表以u为根的包括自己在内的子树的最大利润 ...

  8. Java的浅拷贝与深拷贝总结

    Java中的对象拷贝(Object Copy)指的是将一个对象的所有属性(成员变量)拷贝到另一个有着相同类类型的对象中去.举例说明:比如,对象A和对象B都属于类S,具有属性a和b.那么对对象A进行拷贝 ...

  9. Shell 命令 之linux 模式下的编程语言

    今天简单介绍一下shell 命令的使用,希望对大家有所帮助!!! 一. 1.首先创建一个文本 在终端 touch test.sh 用gedit test.sh 打开.sh 文件 输入如下,第一行是申明 ...

  10. Mitmproxy 安装

    Mitmproxy Python 安装步骤 官方文档 安装mitmproxy 在cmd中输入 pip install mitmproxy 安装完成后,在cmd中输入 mitmdump(windows不 ...