菜单

导航组件

相关源文件

Ionic Framework 中的导航组件为应用程序导航提供了结构。它们允许用户在应用程序的不同视图和页面之间移动,同时保持历史记录、支持手势并提供流畅的过渡。本页面涵盖了核心导航组件、它们如何协同工作以及实现 Ionic 应用程序导航模式的关键 API 功能。

有关 Menu 等特定导航组件的详细信息,请参阅 Menu 组件。有关 Segments 和 Tabs 的详细信息,请参阅 Segments 和 Tabs

Ionic 的导航系统由多个组件协同工作,提供类似原生移动应用的无缝导航体验。这些组件负责视图过渡、历史记录管理、URL 同步和平台特定的行为。

来源

核心导航组件

Ion-Nav

ion-nav 是一个独立的组件,用于管理页面堆栈。它提供了一种传统的推送/弹出导航模式,这种模式常见于移动应用程序。

主要功能

  • 管理视图堆栈
  • 提供推送、弹出、插入操作
  • 处理带有动画的页面过渡
  • 支持滑动返回手势
  • 维护导航历史

来源

Ion-Router

ion-router 是中央路由器,负责协调不同视图之间的导航。它负责将 URL 映射到组件并管理重定向。

主要功能

  • 基于 URL 的导航
  • 支持 hash 和无 hash 路由
  • 路由重定向
  • 导航守卫 (beforeEnter, beforeLeave)
  • 历史记录管理
  • 后退按钮处理

来源

Ion-Menu

ion-menu 是一个侧边菜单组件,可用于导航。它可以从屏幕的任一侧滑入,并包含应用程序导航或其他内容。

主要功能

  • 可定位在左侧或右侧
  • 多种显示类型(overlay, reveal, push)
  • 通过 API 进行编程控制
  • 用于打开/关闭的滑动(swipe)手势
  • 通过 contentId 与内容集成

来源

Ion-Tabs

ion-tabs 提供了一个基于选项卡的导航界面,每个选项卡都可以拥有自己的导航堆栈。

主要功能

  • 基于选项卡的导航模型
  • 支持或不支持与路由器集成
  • 选项卡选择方法
  • 选项卡更改事件

来源

Ion-Segment

ion-segment 是一组按钮,允许用户在不同视图之间切换。

主要功能

  • Segment 按钮选择
  • 用于在 segments 之间滑动的触摸手势支持
  • 可滚动的 segments
  • 视觉定制选项

来源

下图说明了导航如何通过 Ionic 组件进行流程以及导航过程中发生的生命周期事件。

来源

此图显示了 Ionic 中导航组件之间的层级结构和关系

来源

Ionic 的导航系统通过多种机制管理导航状态

组件状态管理方面实现
ion-routerURL 状态通过 ion-route 组件将 URL 映射到组件视图
ion-router历史记录通过 popstate 事件管理浏览器历史记录
ion-nav视图堆栈维护视图数组以进行推送/弹出操作
ion-nav过渡效果管理视图之间的动画
ion-tabs选中的选项卡跟踪活动的选项卡状态
ion-menu打开状态管理菜单的打开/关闭状态

来源

堆栈导航与 ion-nav

ion-nav 组件提供类似于原生移动应用程序的推送/弹出导航

关键方法

  • push():将新组件添加到导航堆栈
  • pop():从堆栈中移除顶部组件
  • setRoot():替换根组件
  • popToRoot():导航回堆栈中的第一个组件

来源

URL路由导航

ion-router 支持应用程序通过 URL 进行导航

路由使用 ion-route 组件进行定义

来源

侧边菜单导航

ion-menu 提供了一个侧边菜单,可用于导航

菜单可以通过 `contentId` 属性与内容连接

来源

标签页导航

ion-tabs 提供标签页导航

标签页通常定义如下

来源

分段导航

ion-segment 提供了一个分段控件,用于切换视图

分段按钮通常定义如下

来源

路由集成

Ionic 的导航系统可以与框架路由器一起使用,也可以独立使用

路由集成支持:

  • 框架特定的导航模式
  • URL 同步
  • 深度链接
  • 浏览器历史管理

来源

Ionic 导航组件在导航过程中会触发事件,可以用于响应导航变化

组件事件描述
ion-routerionRouteWillChange在路由即将更改时触发
ion-routerionRouteDidChange在路由更改后触发
ion-navionNavWillChange在导航即将发生时触发
ion-navionNavDidChange在导航完成后触发
ion-tabsionTabsWillChange在标签页即将更改时触发
ion-tabsionTabsDidChange在标签页更改后触发
ion-menuionWillOpen在菜单即将打开时触发
ion-menuionDidOpen在菜单打开后触发
ion-menuionWillClose在菜单即将关闭时触发
ion-menuionDidClose在菜单关闭后触发
ion-segmentionChange在分段控件值更改时触发

来源

手势导航

Ionic 导航组件支持手势导航

组件手势配置属性
ion-nav滑动返回swipeGesture
ion-menu滑动打开swipeGesture
ion-segment滑动切换分段swipeGesture

这些手势为移动应用程序提供了类似原生般的体验。

来源

根据应用程序的需求选择合适的导航组件

  • ion-nav:适用于需要传统推送/弹出导航堆栈的应用
  • ion-router:适用于需要 URL 导航的应用
  • ion-tabs:适用于具有不同、同级部分的应用
  • ion-menu:适用于拥有大量导航选项或层级导航的应用
  • ion-segment:适用于在页面内切换相关视图

许多应用程序会结合使用这些组件,以获得全面的导航体验。

来源