React Native中导航组件react-navigation跨tab路由处理详解


Posted in Javascript onOctober 31, 2017

前言

大家应该都有所体会,我们在一般应用都有跨tab跳转的需求, 这就需要特别处理下路由,所以 下面是使用react-navigation作为路由组件的一种方式.

具体情境是: app分三大模块Home主页, Bill账单和Me我的, 对应三个tab. 现在需求是 Home push HomeTwo, HomeTwo push BillTwo, BillTwo 返回到 Bill账单首页.

方法如下:

首先选择路由结构, 选择使用最外层是StackNavigator, 然后包含3个TabNavigator和其他组件.

const Components = {
 HomeTwo: { screen: HomeTwo, path:'app/HomeTwo' },
 HomeThree: { screen: HomeThree, path:'app/HomeThree' },
 BillTwo: { screen: BillTwo, path:'app/BillTwo' },
 BillThree: { screen: BillThree, path:'app/BillThree' },
}

const Tabs = TabNavigator({
 Home: {
  screen: Home,
  path:'app/home',
  navigationOptions: { 
  tabBar: {
   label: '首页',
   icon: ({tintColor}) => (<Image source={require('./images/home.png')} style={[{tintColor: tintColor},styles.icon]}/>),
  },
  }
 },
 Bill: {
  screen: Bill,
  path:'app/bill',
  navigationOptions: {
  tabBar: {
   label: '账单',
   icon: ({tintColor}) => (<Image source={require('./images/bill.png')} style={[{tintColor: tintColor},styles.icon]}/>),
  },
  }
 },
 Me: {
  screen: Me,
  path:'app/me',
  navigationOptions: {
  tabBar: {
   label: '我',
   icon: ({tintColor}) => (<Image source={require('./images/me.png')} style={[{tintColor: tintColor},styles.icon]}/>),
  },
  }
 }
 }, {
 tabBarPosition: 'bottom', 
 swipeEnabled: false,
 animationEnabled: false, 
 lazyLoad: false, 
 backBehavior: 'none', 
 tabBarOptions: {
  activeTintColor: '#ff8500', 
  inactiveTintColor: '#999',
  showIcon: true, 
  indicatorStyle: {
  height: 0 
  },
  style: {
  backgroundColor: '#fff', 
  },
  labelStyle: {
  fontSize: 10, 
  },
 },
 });


 const Navs = StackNavigator({
 Home: { screen: Tabs, path:'app/Home' },
 Bill: { screen: Tabs, path:'app/Bill' },
 Me: { screen: Tabs, path:'app/Me' },
 ...Components
 }, {
 initialRouteName: 'Home', 
 navigationOptions: { 
  header: { 
  style: {
   backgroundColor: '#fff'
  },
  titleStyle: {
   color: 'green'
  }
  },
  cardStack: { 
  gesturesEnabled: true
  }
 },
 mode: 'card', 
 headerMode: 'screen'
 });

在HomeTwo里使用react-navigation自带的reset action就可以重置路由信息了:

// push BillTwo
this.props.navigation.dispatch(resetAction);

// 使用reset action重置路由
const resetAction = NavigationActions.reset({
 index: 1, // 注意不要越界
 actions: [ // 栈里的路由信息会从 Home->HomeTwo 变成了 Bill->BillTwo
 NavigationActions.navigate({ routeName: 'Bill'}),
 NavigationActions.navigate({ routeName: 'BillTwo'})
 ]
});

从HomeTwo push 到 BillTwo页面后, 点击BillTwo的左上角导航按钮返回就能返回到Bill账单首页了.

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
很全的显示阴历(农历)日期的js代码
Jan 01 Javascript
js数组操作学习总结
Nov 04 Javascript
js中this用法实例详解
May 05 Javascript
微信小程序 生命周期和页面的生命周期详细介绍
Jan 19 Javascript
jQuery源码分析之sizzle选择器详解
Feb 13 Javascript
基于iScroll实现内容滚动效果
Mar 21 Javascript
bootstrap中selectpicker下拉框使用方法实例
Mar 22 Javascript
在Vue项目中使用snapshot测试的具体使用
Apr 16 Javascript
使用 vue 实现灭霸打响指英雄消失的效果附demo
May 06 Javascript
vue里的data要用return返回的原因浅析
May 28 Javascript
js实现无缝轮播图插件封装
Jul 31 Javascript
解决ant Design中Select设置initialValue时的大坑
Oct 29 Javascript
ES6解构赋值实例详解
Oct 31 #Javascript
js 获取json数组里面数组的长度实例
Oct 31 #Javascript
jQuery读取本地的json文件(实例讲解)
Oct 31 #jQuery
canvas绘制爱心的几种方法总结(推荐)
Oct 31 #Javascript
ES6扩展运算符用法实例分析
Oct 31 #Javascript
JavaScript中正则表达式使数字、中文或指定字符高亮显示
Oct 31 #Javascript
JavaScript实现QQ列表展开收缩扩展功能
Oct 30 #Javascript
You might like
英雄试炼之肉山谷—引领RPG新潮流
2020/04/20 DOTA
Laravel框架中实现使用阿里云ACE缓存服务
2015/02/10 PHP
cakephp打印sql语句的方法
2015/02/13 PHP
laravel 5 实现模板主题功能
2015/03/02 PHP
php获得客户端浏览器名称及版本的方法(基于ECShop函数)
2015/12/23 PHP
php实现简单加入购物车功能
2017/03/07 PHP
PHP 序列化和反序列化函数实例详解
2020/07/18 PHP
Swoole扩展的6种模式深入详解
2021/03/04 PHP
W3C Group的JavaScript1.8 新特性介绍
2009/05/19 Javascript
JS维吉尼亚密码算法实现代码
2010/11/09 Javascript
JS Pro-深入面向对象的程序设计之继承的详解
2013/05/07 Javascript
JavaScript中this关键词的使用技巧、工作原理以及注意事项
2014/05/20 Javascript
javascript中hasOwnProperty() 方法使用指南
2015/03/09 Javascript
在linux中使用包管理器安装node.js
2015/03/13 Javascript
JQuery中解决重复动画的方法
2016/10/17 Javascript
微信小程序-滚动消息通知的实例代码
2017/08/03 Javascript
vue webuploader 文件上传组件开发
2017/09/23 Javascript
微信小程序 scroll-view 实现锚点跳转功能
2019/12/12 Javascript
vue3+typescript实现图片懒加载插件
2020/10/26 Javascript
[43:32]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS NewBee第一场
2014/05/26 DOTA
[42:11]TNC vs Pain 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
Python实现抓取HTML网页并以PDF文件形式保存的方法
2018/05/08 Python
销售所有的狗狗产品:Dog.com
2016/10/13 全球购物
运动会广播稿100字
2014/01/11 职场文书
爱心捐款倡议书范文
2014/05/12 职场文书
简单通用的简历自我评价
2014/09/21 职场文书
县政府领导班子四风问题对照检查材料思想汇报
2014/09/26 职场文书
铅球加油稿100字
2014/09/26 职场文书
2014年预算员工作总结
2014/12/05 职场文书
2015大学自主招生自荐信范文
2015/03/04 职场文书
宾馆前台接待岗位职责
2015/04/02 职场文书
2015国庆节感想
2015/08/04 职场文书
城镇居民医疗保险工作总结
2015/08/10 职场文书
2016同学毕业寄语大全
2015/12/04 职场文书
《唯一的听众》教学反思
2016/02/18 职场文书
在JavaScript中如何使用宏详解
2021/05/06 Javascript