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 相关文章推荐
JSON辅助格式化处理方法
Mar 26 Javascript
jQuery cdn使用介绍
May 08 Javascript
js实现页面转发功能示例代码
Aug 05 Javascript
js控制浏览器全屏示例代码
Feb 20 Javascript
可编辑下拉框的2种实现方式
Jun 13 Javascript
JavaScript多线程详解
Aug 12 Javascript
js实现动态创建的元素绑定事件
Jul 19 Javascript
第一次记录Bootstrap table学习笔记(1)
May 18 Javascript
vue.js,ajax渲染页面的实例
Feb 11 Javascript
vue项目webpack中Npm传递参数配置不同域名接口
Jun 15 Javascript
React key值的作用和使用详解
Aug 23 Javascript
详解Vscode中使用Eslint终极配置大全
Nov 08 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
将一维或多维的数组连接成一个字符串的php代码
2010/08/08 PHP
php实现文件下载(支持中文文名)
2013/12/04 PHP
php实现过滤UBB代码的类
2015/03/12 PHP
Laravel 5 框架入门(一)
2015/04/09 PHP
PHP入门教程之PHP操作MySQL的方法分析
2016/09/11 PHP
PHP 信号管理知识整理汇总
2017/02/19 PHP
Laravel配置全局公共函数的方法步骤
2019/05/09 PHP
调试php程序的简单步骤
2019/10/04 PHP
javascript 面向对象全新理练之原型继承
2009/12/03 Javascript
Javascript 异步加载详解(浏览器在javascript的加载方式)
2012/05/20 Javascript
jQuery 隐藏和显示 input 默认值示例
2014/06/03 Javascript
html文本框提示效果的示例代码
2014/06/28 Javascript
JQuery实现带排序功能的权限选择实例
2015/05/18 Javascript
详解javascript函数的参数
2015/11/10 Javascript
实例剖析AngularJS框架中数据的双向绑定运用
2016/03/04 Javascript
NodeJS创建基础应用并应用模板引擎
2016/04/12 NodeJs
JS图片定时翻滚效果实现方法
2016/06/21 Javascript
基于node.js依赖express解析post请求四种数据格式
2017/02/13 Javascript
微信小程序使用Socket的实例
2017/09/19 Javascript
浅谈node的事件机制
2017/10/09 Javascript
js实现购物车功能
2018/06/12 Javascript
详解如何构建一个Angular6的第三方npm包
2018/09/07 Javascript
ES6 对象的新功能与解构赋值介绍
2019/02/05 Javascript
Python解析网页源代码中的115网盘链接实例
2014/09/30 Python
使用Python编写一个简单的tic-tac-toe游戏的教程
2015/04/16 Python
Python封装shell命令实例分析
2015/05/05 Python
Python实现爬虫爬取NBA数据功能示例
2018/05/28 Python
python 三元运算符使用解析
2019/09/16 Python
Python程序慢的重要原因
2020/09/04 Python
python中绕过反爬虫的方法总结
2020/11/25 Python
导游的职业规划书范文
2013/12/27 职场文书
建筑工程管理专业自荐信范文
2013/12/28 职场文书
暑假家长评语大全
2014/04/17 职场文书
家长建议怎么写
2014/05/15 职场文书
自主招生推荐信怎么写
2015/03/26 职场文书
2016年第32个教师节红领巾广播稿
2015/12/18 职场文书