ReactNative系列(四):react-navigatio

2019-07-05  本文已影响0人  猿海一粟
ReactNative.jpg

ReactNative整理:《ReactNative系列》

内容目录

1. react-navigation简介
2. react-navigation详解
 2.1 安装react-navigation
 2.2 StackNavigator -- 堆栈式导航
 2.3 SwitchNavigator -- 单页式导航
 2.4 TabNavigator -- 标签式导航
 2.5 DrawerNavigator -- 抽屉式导航
3. 结束


一、react-navigation简介

 移动应用基本上不会由单个页面组成。管理多个页面的呈现、跳转的组件,就是我们所说的导航器(Navigator)。
 React Navigation 源于 React Native 社区对一个可扩展且易于使用的导航解决方案的需求,它完全使用 JavaScript 编写。是社区今后主推的导航库。到现在为止已经维护到3.x版本。
react-navigation导航器类型包括:StackNavigator、TabNavigator、DrawerNavigator、SwitchNavigator、BottomTabNavigator和MaterialTabNavigator。创建导航器的方法变成了以create开头,例如:创建StackNavigator需要用createStackNavigator,其余类似。
几种重要导航:

下面的内容也是围绕这四个导航类型来展开。建议大家看英文文档,相比中文文档要更准确点,同时也锻炼英文阅读能力。

ReactNavigation官方文档:《React Navigation》

二、react-navigation使用

1. 安装react-navigation

// 如果有安装Yarn工具
yarn add react-navigation
// or with npm
// npm install --save react-navigation

然后,需要安装react-native-gesture-handler

yarn add react-native-gesture-handler
// or with npm
// npm install --save react-native-gesture-handler

之后,Link链接到原生依赖。

react-native link react-native-gesture-handler

2. StackNavigation -- 堆栈式导航

简单来说,StackNavigation是一种以栈形式来管理页面的页面切换方式,默认配置下,具有熟悉的Android和iOS感觉&外观。的特性是先进后出,所以最新生成的页面push入栈后,会在最顶层。

(1) API定义

// 需要两个配置参数对象
createStackNavigator(RouteConfigs, StackNavigatorConfig);

(2) RouteConfigs(路由配置对象)
路由配置对象是从路由名称到路由配置的映射,它告诉导航器该路由呈现的内容。

(3) StackNavigatorConfig (导航器配置对象)
路由选项:

视觉选项:

(4) navigationOptions - 用于导航内部的页面配置
属性值太多,这里只列举一部分,有兴趣的可以去官网对照,

3. SwitchNavigator -- 单页式导航

SwitchNavigator的用途是一次只显示一个页面。默认情况下,它不处理返回操作,并在页面切换的时候将路由重置为默认状态。该导航器适合用于首页需要广告或者需要安全验证的场景。

(1) API定义

createSwitchNavigator(RouteConfigs, SwitchNavigatorConfig);

(2) RouteConfigs(路由配置对象)
路由配置对象是从路由名称到路由配置的映射,它告诉导航器该路由呈现的内容。具体属性值可以参照createStackNavigator,两者类似。

(3) SwitchNavigatorConfig (导航配置对象)
有几个传递给底层路由器以修改路由逻辑的选项:

4. TabNavigator -- 标签式导航

TabNavigator在3.x版本中已经被移除,用createBottomTabNavigatorcreateMaterialTopTabNavigator来代替。

4.1 BottomTabNavigator -- 底部标签导航
 页面底部的标签栏,可以在不同路由之间切换。路由会懒加载,屏幕组件只有在第一次获取焦点时才会加载。

(1) API定义

createBottomTabNavigator(RouteConfigs, BottomTabNavigatorConfig);

(2) RouteConfigs(路由配置对象)
还是和上面一样,参照createStackNavigator属性配置。

(3) BottomTabNavigatorConfig (导航配置对象)

(4) navigationOptions - 用于导航内部的页面配置

4.2 MaterialTopTabNavigator -- 顶部标签导航
 屏幕顶部以材料设计为主题的选项卡栏,可通过点击路线或水平滑动在不同路线之间切换。默认情况下,转换是动态的。每个路由的屏幕组件会立即装载。

(1) API定义

createMaterialTopTabNavigator(RouteConfigs, TabNavigatorConfig);

(2) RouteConfigs(路由配置对象)
依旧参照createStackNavigator属性配置。

(3) TabNavigatorConfig (导航配置对象)
BottomTabNavigatorConfig类似,里面的很多相同属性这里就不再重复了,只说几个不同属性:

(4) navigationOptions - 用于导航内部的页面配置
同样,该配置对象中相同的属性就不再这里重复了,只介绍不同的属性。

5. DrawerNavigator -- 抽屉式导航

抽屉式导航不用多说,很多应用中都有这种操作方式。

(1) API定义

createDrawerNavigator(RouteConfigs, DrawerNavigatorConfig);

(2)RouteConfigs(路由配置对象)
依旧参照createStackNavigator属性配置。

(3) DrawerNavigatorConfig(导航配置对象)

DrawerNavigator在引擎下使用DrawerLayout,因此它继承了以下特性:

有几个选项传递给底层路由器以修改导航逻辑:

contentComponent还可以接收一个名为drawerOpenProgress的属性,它是表示抽屉动画位置的动画值(0为关闭,1为打开)。该属性允许你在contentComponent执行有趣的动画,像抽屉的视差运动。

(4) DrawerItems的内容选项:

(5) navigationOptions - 用于导航内部的页面配置

将抽屉导航器嵌套在其他内部

如果抽屉导航器嵌套在另一个提供某些UI的导航器中,例如选项卡导航器或堆栈导航器,则抽屉将呈现在这些导航器UI的下方。抽屉将出现在标签栏下方和堆栈标题下方。嵌套时需要使抽屉导航器成为任何导航器的父级,其中抽屉应在其UI顶部呈现。

三、结束

React-Navigation中的几种导航类型就都介绍完了,这里主要是罗列了各个导航器的属性配置(如果开发中遇到导航相关的BUG可以查找这些属性来调整解决,大部分是可以解决掉的)。由于篇幅问题,这篇文章只介绍属性,后面两篇会介绍每种导航器的用法及相互嵌套时的使用方式。另外,这几个导航的中文名称是我自己根据功能加上去的,大家可以不用在意。

  下一篇:ReactNative系列(五):react-natigation 3.x全解(中)

 有问题的地方欢迎指出,大家一起讨论,喜欢的话可以点赞关注。

上一篇下一篇

猜你喜欢

热点阅读