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 相关文章推荐
2007/12/23更新创意无限,简单实用(javascript log)
Dec 24 Javascript
IE中createElement需要注意的一个问题
Jul 13 Javascript
javascript学习笔记(二) js一些基本概念
Jun 18 Javascript
javascript学习笔记(九) js对象 设计模式
Jun 19 Javascript
JavaScript获取页面中表单(form)数量的方法
Apr 03 Javascript
javascript数组去重的六种方法汇总
Aug 16 Javascript
总结十个Angular.js由浅入深的面试问题
Aug 26 Javascript
完美实现js选项卡切换效果(二)
Mar 08 Javascript
简单实现jQuery弹窗效果
Oct 30 jQuery
Vue 实现双向绑定的四种方法
Mar 16 Javascript
jQuery each和js forEach用法比较
Feb 27 jQuery
浅析TypeScript 命名空间
Mar 19 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
WinXP + Apache +PHP5 + MySQL + phpMyAdmin安装全功略
2006/07/09 PHP
10条PHP编程习惯助你找工作
2008/09/29 PHP
php 中英文语言转换类
2011/09/07 PHP
在php和MySql中计算时间差的方法详解
2015/03/27 PHP
PHP Yii框架之表单验证规则大全
2015/11/16 PHP
在CentOS系统上从零开始搭建WordPress博客的全流程记录
2016/04/21 PHP
PHP性能分析工具xhprof的安装使用与注意事项
2017/12/19 PHP
Laravel框架验证码类用法实例分析
2019/09/11 PHP
jQuery+PHP实现图片上传并提交功能
2020/07/27 PHP
juqery 学习之三 选择器 层级 基本
2010/11/25 Javascript
基于Jquery制作的幻灯片图集效果打包下载
2011/02/12 Javascript
javascript制作的简单注册模块表单验证
2015/04/13 Javascript
jquery实现的伪分页效果代码
2015/10/29 Javascript
bootstrap组件之按钮式下拉菜单小结
2017/01/19 Javascript
JavaScript中十种一步拷贝数组的方法实例详解
2019/04/22 Javascript
微信小程序里引入SVG矢量图标的方法
2019/09/20 Javascript
浅谈vue项目用到的mock数据接口的两种方式
2019/10/09 Javascript
你知道JavaScript Symbol类型怎么用吗
2020/01/08 Javascript
jQuery加PHP实现图片上传并提交的示例代码
2020/07/16 jQuery
vue中组件通信详解(父子组件, 爷孙组件, 兄弟组件)
2020/07/27 Javascript
vue中解决微信html5原生ios虚拟键返回不刷新问题
2020/10/20 Javascript
JS中锚点链接点击平滑滚动并自由调整到顶部位置
2021/02/06 Javascript
python中循环语句while用法实例
2015/05/16 Python
python实现的希尔排序算法实例
2015/07/01 Python
python Django里CSRF 对应策略详解
2019/08/05 Python
如何利用Python开发一个简单的猜数字游戏
2019/09/22 Python
python飞机大战 pygame游戏创建快速入门详解
2019/12/17 Python
德国W家官网,可直邮中国的母婴商城:Windeln.de
2021/03/03 全球购物
初中生三年学习生活的自我评价
2013/11/03 职场文书
大课间活动制度
2014/01/18 职场文书
企业诚信承诺书
2014/05/23 职场文书
2016幼儿教师自荐信范文
2016/01/28 职场文书
python爬取企查查企业信息之selenium自动模拟登录企查查
2021/04/08 Python
JavaScript中document.activeELement焦点元素介绍
2021/11/27 Javascript
python文件与路径操作神器 pathlib
2022/04/01 Python
CSS使用Flex和Grid布局实现3D骰子
2022/08/05 HTML / CSS