准备工作
使用第三方库React Navigation实现界面导航与跳转
1.打开项目中package.json文件,查看react-native版本。
若react-native版本号不是0.58.6,手动修改过来。
执行命令“npm install”。再检查项目能否成功运行。
2.在项目中运行命令:
1 | npm install --save react-navigation@2.18.3 |
3.再次查看package.json文件,三者版本号
顶部导航栏createStackNavigator()
createStackNavigator()返回的是一个组件,可以在createStackNavigator()定义组件后在页面中通过调用该组件显示出导航栏。
页面跳转
createStackNavigator 参数1
通过createStackNavigator()的 第一个参数 定义两个路由(Login和Main),screen是他们对应的页面:
createStackNavigator对象可以看做一个组件,在你需要使用的地方渲染该组件:
navigation.navigate()页面跳转
3.编写LoginScreen页面:
当导航器中的屏幕被打开时,它会收到一个navigation属性,navigation的作用有很多,其中navigate()可以跳转到其他界面。
4.编写MainScreen页面:
navigation的state:屏幕的当前state。
顶部导航栏的返回按钮
每个界面的顶部导航栏左边默认设置了一个返回按钮,通过它可以返回到之前一个页面。
如果想要取消某个页面的头部导航栏,需要在该页面组件中定义:
createStackNavigator 参数2 navigationOptions
若要取消所有页面的头部导航栏,需要在路由中定义第 二个参数navigationOptions:
手动返回 this.props.navigation.goBack()
eg:MainScreen中添加按钮,点击该按钮,回到LoginScreen:
向上一个页面返回数据
this.props.navigation.state.params.refresh()返回数据
MainScreen:
调用this.props.navigation.state.params.refresh方法返回数据
refresh中事件函数的形参 接受数据
LoginScreen:
refresh中事件函数的 形参 data 接收MainScreen返回回来的数据
若是将数据显示在ToastAndroid中,则直接show。
若是显示在界面控件中,需用state处理,因为此时界面状态发生了改变。
通过state将界面重新渲染
①初始化state
②设置state属性值
③获取state属性值
底部导航栏createBottomTabNavigator()
还有一个类似的createMaterialTopTabNavigator()是顶部导航。
创建含有两个页面的底部导航
创建含有MessageScreen和ContactsScreen两个页面的底部导航
1.定义MessageScreen和ContactsScreen页面:
createBottomTabNavigator()参数1
2.定义页面的路由名称Message和Contacts:
注意:“设置”中可配置的参数放在下面“参数2”中列出。
3.渲染路由组件:
createBottomTabNavigator()参数2 navigationOptions
渲染底部图标和文字(其中renderTabBar()是自己另外定义的作为判断使用):
对导航和tabBar的设置,定义在路由组件参数2中: