ReactNative 导航器实例

准备工作

使用第三方库React Navigation实现界面导航与跳转

1.打开项目中package.json文件,查看react-native版本
若react-native版本号不是0.58.6,手动修改过来。
第一步

执行命令“npm install”。再检查项目能否成功运行。

2.在项目中运行命令:

1
2
npm  install --save react-navigation@2.18.3
npm install --save @types/react-navigation

3.再次查看package.json文件,三者版本号
版本号


顶部导航栏createStackNavigator()

createStackNavigator()返回的是一个组件,可以在createStackNavigator()定义组件后在页面中通过调用该组件显示出导航栏

页面跳转

createStackNavigator 参数1

通过createStackNavigator()的 第一个参数 定义两个路由(Login和Main),screen是他们对应的页面
定义路由

createStackNavigator对象可以看做一个组件,在你需要使用的地方渲染该组件:
渲染路由

3.编写LoginScreen页面:
编写LoginScreen
当导航器中的屏幕被打开时,它会收到一个navigation属性,navigation的作用有很多,其中navigate()可以跳转到其他界面

4.编写MainScreen页面:
编写MainScreen
navigation的state:屏幕的当前state。

顶部导航栏的返回按钮

每个界面的顶部导航栏左边默认设置了一个返回按钮,通过它可以返回到之前一个页面。
如果想要取消某个页面的头部导航栏,需要在该页面组件中定义:
取消单个页面的头部导航栏

createStackNavigator 参数2 navigationOptions

若要取消所有页面的头部导航栏,需要在路由中定义第 二个参数navigationOptions
取消所有页面的头部导航栏


手动返回 this.props.navigation.goBack()

eg:MainScreen中添加按钮,点击该按钮,回到LoginScreen:
this.props.navigation.goBack()

向上一个页面返回数据

this.props.navigation.state.params.refresh()返回数据

MainScreen
MainScreen
调用this.props.navigation.state.params.refresh方法返回数据

refresh中事件函数的形参 接受数据

LoginScreen
LoginScreen
refresh中事件函数的 形参 data 接收MainScreen返回回来的数据
若是将数据显示在ToastAndroid中,则直接show。
若是显示在界面控件中,需用state处理,因为此时界面状态发生了改变。

通过state将界面重新渲染

①初始化state
初始化state

②设置state属性值
设置state属性值

③获取state属性值
获取state属性值


底部导航栏createBottomTabNavigator()

还有一个类似的createMaterialTopTabNavigator()是顶部导航。

创建含有两个页面的底部导航

创建含有MessageScreen和ContactsScreen两个页面的底部导航

1.定义MessageScreen和ContactsScreen页面
定义两个Screen

createBottomTabNavigator()参数1

2.定义页面的路由名称Message和Contacts:
image.png
注意:“设置”中可配置的参数放在下面“参数2”中列出。

3.渲染路由组件
image.png

createBottomTabNavigator()参数2 navigationOptions

渲染底部图标和文字(其中renderTabBar()是自己另外定义的作为判断使用):
渲染底部图标和文字

对导航和tabBar的设置,定义在路由组件参数2中:
参数2