react-native——tab配置及跳转
2024-09-26 14:23:09
在 App 中 tab 是常见的页面类型,在 RN 里使用 react-navigation 可快速地进行 tab 配置。
假设应用有4个页面,两个是tab页面,两个是详情页面。
App.js
//应用实际场景是有redux的,这里就不删除了。不使用rudex的话,直接 return <Router />就 ok 啦!
import React, { Component } from 'react';
import { Provider } from 'react-redux';
import { PersistGate } from 'redux-persist/integration/react';
import configureStore from './store';
import Router from './router';
let store = configureStore();
export default class App extends Component {
render() {
return (
<Provider store={store.store} style={{ flex: 1 }}>
<PersistGate persistor={store.persistor}>
<Router />
</PersistGate>
</Provider>
);
}
};
router.js
import { createBottomTabNavigator, createAppContainer, createStackNavigator } from 'react-navigation';
import React from 'react';
import { Image } from 'react-native';
import Index from './view/index';
import Center from './view/center';
import Detail1 from './view/detail1';
import Detail2 from './view/detail2';
const TabNavigator = createBottomTabNavigator({
Index: {
screen: Index,
navigationOptions: {
title: '首页'
}
},
Center: {
screen: Center,
navigationOptions: {
title: '我的'
}
},
}, tabBarConfig);
const AppNavigator = createStackNavigator({
Tab: TabNavigator,
Detail1: Detail1
Detail2: Detail2
}, { headerMode: 'none' });//删除每个页面的头(一般使用自定义的)
export default createAppContainer(AppNavigator);
const tabBarConfig = { //tab的一些配置
defaultNavigationOptions: ({ navigation }) => ({
tabBarIcon: ({ focused, horizontal, tintColor }) => {//处理tab icon
const { routeName } = navigation.state;
let iconUrl;
switch (routeName) {
case 'Center':
iconUrl = focused ? require('./assets/imgs/me-full.png') : require('./assets/imgs/me.png');
break;
default:
iconUrl = focused ? require('./assets/imgs/mv-full.png') : require('./assets/imgs/mv.png');
break;
}
return <Image source={iconUrl} style={{ width: 25, height: 25 }} />;
},
}),
tabBarOptions: {
activeTintColor: '#fd0',
inactiveTintColor: '#666',
labelStyle: {
fontSize: 14
},
style: {
backgroundColor: '#fafafa',
}
}
}
应用中,跳转非tab页面,建议使用push跳转,跳转tab建议使用navigate进行跳转。
<Text onPress={() => this.props.navigation.navigate('Center')}>跳转Center</Text>
<Text onPress={() => this.props.navigation.push('Detail1')}>跳转Detail</Text>
最新文章
- [LeetCode] Length of Last Word 求末尾单词的长度
- TCP流量控制与拥塞控制
- Spark on Yarn:java.sql.SQLException: No suitable driver found for jdbc:microsoft:sqlserver://localhost\\db_instance_name:1433;databaseName=db_name
- Python私有变量
- ***常见复杂SQL语句(含统计类SQL)
- ajax 跨域的几种方式
- PHP学习笔记(2) - 对PHP的印象
- 【POJ1581】A Contesting Decision(简单模拟)
- leetcode[55] Merge Intervals
- Lua C Api lua_gettable 、lua_settable 、lua_next 使用详解
- 体验VS2017的Live Unit Testing
- Ajax的简单实用实例
- MFC学习问题总结
- 基于docker/dockerfile实现redis主从复制
- P4099 [HEOI2013]SAO
- 运行wmic命令异常:java.io.IOException: Cannot run program ";wmic";: CreateProcess error=2, ϵͳ&#213;Ҳ&#187;&#181;&#189;ָ&#182;解决记录
- python自学开始
- 协程 coroutine
- UFLDL 教程学习笔记(一)
- c语言入门经典(第5版)
热门文章
- nginx多层反向代理获取客户端真实ip
- 为什么一般hashtable的桶数会取一个素数
- SeetaFaceEngine2 实例
- 译文:A Robust and Modular Multi-Sensor Fusion ApproachApplied to MAV Navigation
- Java中使用Socket连接判断Inputstream结束,java tcp socket服务端,python tcp socket客户端
- Spring cloud微服务安全实战-4-1章节概述
- ES6深入浅出-7 新版的类(上集)-2.介绍JS中的类
- django 自定义 密码加密方式 及自定义验证方式
- python通过socket实现多个连接并实现ssh功能详解
- 迅速生成项目-react-static