React Navigation / React Native Navigation 多种类型的导航结合使用,构造合理回退栈
React Navigation 更新到版本5已经是非常完善的一套导航管理组件, 提供了Stack , Tab , Drawer 导航方式 , 那么我们应该怎样设计和组合应用他们来构建一个完美的回退栈呢?
1 . 确定APP的整体风格,国外偏好使用Drawer布局, 但到了国内就很少被使用
2. 每个导航也是一个component, 可以作为另外一个导航的一个页面
其他的具体使用参考官网即可
import {createAppContainer} from 'react-navigation';
import {createBottomTabNavigator} from 'react-navigation-tabs';
import * as React from 'react';
import MineTabNavigator from '../screens/Mine/MineTabNavigator';
import DashboardTabNavigator from '../screens/Dashboard/DashboardTabNavigator';
import DeviceTabNavigator from '../screens/Device/DeviceTabNavigator';
import {MaterialTgitopTabNavigator} from '../screens/Organization/OrgTreeScreen';
import {createStackNavigator} from 'react-navigation-stack';
import NotificationTabNavigator from '../screens/Notification/NotificationTabNavigator';
import SplashScreen from '../screens/Splash/SplashScreen';
import LoginScreen from '../screens/Mine/Login/LoginScreen';
import Svg from '../components/Svg/svg';/**
* 配置底部标签
*/
const Tab = createBottomTabNavigator({
//每一个页面的配置
DashboardScreen: {
screen: DashboardTabNavigator,
navigationOptions: {
//stackNavigator的属性
gestureResponseDistance: {horizontal: 300},
headerBackTitle: null,
headerStyle: {backgroundColor: '#FFFFFF'},//导航栏的样式
//tab 的属性
tabBarLabel: '首页',
tabBarIcon: ({focused, horizontal, tintColor}) => (
<Svg icon="abb_home_24" color={tintColor}/>
),
},
},
NotificationTab: {
screen: NotificationTabNavigator,
navigationOptions: {
//stackNavigator的属性
headerTitle: '通知',
gestureResponseDistance: {horizontal: 300},
headerBackTitle: null,
headerStyle: {backgroundColor: '#FFFFFF'},//导航栏的样式
headerTitleStyle: {
color: '#686868',
fontSize: 16,
fontFamily: 'ABBvoiceCNSG-Regular',
},
//tab 的属性
tabBarLabel: '消息',
tabBarIcon: ({focused, horizontal, tintColor}) => (
<Svg icon="abb_alarm-bell_24" color={tintColor}/>
),
},
},
MineTab: {
screen: MineTabNavigator,
navigationOptions: {
//stackNavigator的属性
headerTitle: '我的',
gestureResponseDistance: {horizontal: 300},
headerBackTitle: null,
headerStyle: {
backgroundColor: '#FFFFFF',
},//导航栏的样式
headerTitleStyle: {
color: '#686868',
fontSize: 16,
fontFamily: 'ABBvoiceCNSG-Regular',
height: 48,
},
//tab 的属性
tabBarLabel: '我的',
tabBarIcon: ({focused, horizontal, tintColor}) => (
<Svg icon="abb_user_24" color={tintColor}/>
),
},
}, }, {
//设置TabNavigator的位置
tabBarPosition: 'bottom',
//是否在更改标签时显示动画
animationEnabled: true,
//是否允许在标签之间进行滑动
swipeEnabled: true,
//按 back 键是否跳转到第一个Tab(首页), none 为不跳转
backBehavior: 'false',
//设置Tab标签的属性 tabBarOptions: {
//Android属性
upperCaseLabel: false,//是否使标签大写,默认为true
//共有属性
showIcon: true,//是否显示图标,默认关闭
showLabel: true,//是否显示label,默认开启
activeTintColor: '#3366FF',//label和icon的前景色 活跃状态下(选中)
inactiveTintColor: '#1F1F1F',//label和icon的前景色 活跃状态下(未选中)
style: { //TabNavigator 的背景颜色
backgroundColor: 'white',
height: 55,
},
indicatorStyle: {//标签指示器的样式对象(选项卡底部的行)。安卓底部会多出一条线,可以将height设置为0来暂时解决这个问题
height: 0,
},
labelStyle: {//文字的样式
fontSize: 13,
marginTop: -5,
marginBottom: 5,
},
iconStyle: {//图标的样式
marginBottom: 5,
},
},
}); Tab.navigationOptions = ({navigation}) => ({
header: null,
}); const RootStack = createStackNavigator(
{
Splash: SplashScreen,
Tab: Tab,
Login: LoginScreen,
Logout: LogoutScreen,
Notification: NotificationScreen,
//-------------------
},
{
initialRouteName: 'Splash',
// mode: 'modal',
// // 用于设置安卓卡片式跳转
// // transitionConfig: () => ({
// // screenInterpolator: StackViewStyleInterpolator.forHorizontal,
// // }),
// navigationOptions: () => ({
// gesturesEnabled: true,
// }),
// // 默认导航头样式设置
// defaultNavigationOptions: {
// header: null,
// },
headerLayoutPreset: 'center',
},
); export default AppContainer = createAppContainer(RootStack);
React Navigation / React Native Navigation 多种类型的导航结合使用,构造合理回退栈的更多相关文章
- React Navigation & React Native & React Native Navigation
React Navigation & React Native & React Native Navigation React Navigation https://facebook. ...
- React的React Native
React的React Native React无疑是今年最火的前端框架,github上的star直逼30,000,基于React的React Native的star也直逼20,000.有了React ...
- React native中DrawerNavigator,StackNavigator,TabNavigator导航栏使用
import React from 'react'; import { View, Text,Button } from 'react-native'; import { DrawerNavigato ...
- 一次掌握 React 与 React Native 两个框架
此系列文章将整合我的 React 视频教程与 React Native 书籍中的精华部分,给大家介绍 React 与 React Native 结合学习的方法. 1. 软件开发语言与框架的学习本质 我 ...
- 小谈React、React Native、React Web
React有三个东西,React JS 前端Web框架,React Native 移动终端Hybrid框架,React Web是一个源码转换工具(React Native 转 Web,并之所以特别提出 ...
- react - 解刨组件的多种写法
一,原始的createClass写法 对于写react组件,很多人第一印象往往是createClass,这是因为createClass是react组件最原始的写法,基本每个学react的人都是接触这种 ...
- React 与 React Native 底层共识:React 是什么
此系列文章将整合我的 React 视频教程与 React Native 书籍中的精华部分,给大家介绍 React 与 React Native 结合学习的方法,此小节主要介绍 React 的底层原理与 ...
- 《React Native 精解与实战》书籍连载「React 与 React Native 简介」
此文是我的出版书籍<React Native 精解与实战>连载分享,此书由机械工业出版社出版,书中详解了 React Native 框架底层原理.React Native 组件布局.组件与 ...
- 用react-service做状态管理,适用于react、react native
转载自:https://blog.csdn.net/wo_shi_ma_nong/article/details/100713151 . react-service是一个非常简单的用来在react.r ...
随机推荐
- python list遍历方法汇总
list=['a','b','c','d','e'] #方法1: print('#方法1:') #i值为列表的item,list为列表名,因此i值即为列表元素 for i in list: #list ...
- python的一些基础知识
一.函数介绍 二.模块与包 三.面向对象介绍 四.网络编程基础应用了解 五.基于MySQL对数据库的理解及基础操作 六.粗浅学习的前端知识整理
- 微信小程序navigator带参数跳转及接收参数内容
// index.wxml <navigator class='looks-view' wx:for="{{imgUrlNew}}" wx:key="index&q ...
- day01---学习Mysql高级性能优化1
Mysql逻辑架构图
- Java工具类—包装类
Java工具类--包装类 我们都知道,JDK 其实给我们提供了很多很多 Java 开发者已经写好的现成的类,他们其实都可以理解成工具类,比如我们常见的集合类,日期相关的类,数学相关的类等等,有了这些工 ...
- 使用docker创建redis容器
1.拉取redis镜像
- Centos7上设置zookeeper自启动
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/zhouzhiwengang/artic ...
- flex布局语法+实例
一.什么是flex布局 flex 是 flexible box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性. 任何一个容器都可以指定为 flex 布局.你可以将前端页 ...
- Uni-app页面路由小问题
从地址列表页跳转到地址编辑页之后,编辑完成,回到地址列表页,应该使用uni.redirectTo(),不能使用uni.navigateBack(),因为后者是回到上一个页面,地址列表页的并没有重新加载 ...
- zsh切换bash提示chsh: no changes made问题
前提纪要:1.我们都知道mac有默认bash工具,在下载zsh后,把一切都配置好后,输入切换命令:chsh - s /bin/zsh ,总是提示 chsh: no changes made错误.那我我 ...