React Native中导航组件react-navigation跨tab路由处理详解
前言
大家应该都有所体会,我们在一般应用都有跨tab跳转的需求,这就需要特别处理下路由,所以下面是使用react-navigation作为路由组件的一种方式.
具体情境是:app分三大模块Home主页,Bill账单和Me我的,对应三个tab.现在需求是HomepushHomeTwo,HomeTwopushBillTwo,BillTwo返回到Bill账单首页.
方法如下:
首先选择路由结构,选择使用最外层是StackNavigator,然后包含3个TabNavigator和其他组件.
constComponents={ HomeTwo:{screen:HomeTwo,path:'app/HomeTwo'}, HomeThree:{screen:HomeThree,path:'app/HomeThree'}, BillTwo:{screen:BillTwo,path:'app/BillTwo'}, BillThree:{screen:BillThree,path:'app/BillThree'}, } constTabs=TabNavigator({ Home:{ screen:Home, path:'app/home', navigationOptions:{ tabBar:{ label:'首页', icon:({tintColor})=>(), }, } }, Bill:{ screen:Bill, path:'app/bill', navigationOptions:{ tabBar:{ label:'账单', icon:({tintColor})=>( ), }, } }, Me:{ screen:Me, path:'app/me', navigationOptions:{ tabBar:{ label:'我', icon:({tintColor})=>( ), }, } } },{ 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, }, }, }); constNavs=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自带的resetaction就可以重置路由信息了:
//pushBillTwo this.props.navigation.dispatch(resetAction); //使用resetaction重置路由 constresetAction=NavigationActions.reset({ index:1,//注意不要越界 actions:[//栈里的路由信息会从Home->HomeTwo变成了Bill->BillTwo NavigationActions.navigate({routeName:'Bill'}), NavigationActions.navigate({routeName:'BillTwo'}) ] });
从HomeTwopush到BillTwo页面后,点击BillTwo的左上角导航按钮返回就能返回到Bill账单首页了.
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对毛票票的支持。