由于项目框架方案使用的混编,所以在项目中StackNavigator就变得尤为重要 下面就由小程同学带大家来认识下这个控件。
在学习这个控件时 我查阅了多篇博客发现他们存在一个公有的问题 就是都忽略了一个传值 他们只进行了跳转的操作 忽略了对navigation的讲解。这货(navigation)对于我来说尤为的重要。因为我把Navigator隐藏 并单独将Navigator写成了View(NavigationView)进行控制那么返回按钮的点击事件是需要传递这货的(navigation)不知道大家是否能听懂 上图1.0
1.0
在之后的讲解中我会详细说明这个值的作用。
下面我们按步骤讲解StackNavigator的使用
1.首先我们知道在RN中的跳转跟ios原生是不同的 它需要的是一个路由(类似于书的目录)标记viewcontroller的跳转并且可以对每个导航配置
const MainScreenNavigator = StackNavigator({
TickVC:{screen:TicketViewController},//设置跳转的界面
CityVC:{screen:CityViewController} },
{ initialRouteName: 'TickVC', // 默认显示界面
headerMode:'none',//隐藏StackNavigator
navigationOptions: { // 屏幕导航的默认选项, 也可以在组件内用static navigationOptions 设置(会覆盖此处的设置)
header: { // 导航栏相关设置项 //
backTitle: '', // 左上角返回键文字
style: {
backgroundColor: 'red',
title:'国际机票',titleColor:'white' },
titleStyle: { color: 'green' } },
//cardStack: { // gesturesEnabled: false // } },
gesturesEnabled:true//是否可以使用手势关闭此屏幕
} );
这里不是全部的属性 只是我用到的 如果需要别的属性可以去官方文档上看 我就不赘述了。
我们设置好路由后 如图2.0 在这个界面我多说一句,加上它
2.0
这样我们就可以跳转了
转回我刚才提到的问题,点击返回按钮返回上一界面 这时我需要将navigation传递给我上面提到的NavigationView navigation起到了传递整个navigator属性的作用 如图3.0
在state中可以发现我们在之前路由中设置的所有属性 以及我从上一界面传递的数据都出现在了这里 所以navigation的定义是非常重要的
忘了说 在iOS中pop跳转函数在RN中调用的是:
this.props.navigation.goBack();
小结
至此我完成了StackNavigator的使用 大家如果有不明白的地方可以留言,下次小程同学来跟大家介绍SectionList,敬请期待哦。
网友评论