Back to Uni App

Navigator

docs/api/navigator.md

2.3.340.7 KB
Original Source

uni.navigateTo(options) @navigateto

保留当前页面,跳转到应用内的某个页面

Web微信小程序AndroidiOSHarmonyOSHarmonyOS(Vapor)
4.04.414.114.615.0

参数

名称类型必填默认值兼容性描述
optionsNavigateToOptions-Web: -; 微信小程序: -; Android: -; iOS: -; HarmonyOS: -

options 的属性描述

名称类型必备默认值兼容性描述
urlstring (string.PageURIString)-Web: 4.0; 微信小程序: 4.41; Android: √; iOS: 4.11; HarmonyOS: 4.61; HarmonyOS(Vapor): 5.0需要跳转的应用内非 tabBar 的页面的路径 , 路径后可以带参数
animationTypestring-Web: x; 微信小程序: x; Android: 4.18; iOS: 4.25; HarmonyOS: 4.61; HarmonyOS(Vapor): 5.0窗口显示的动画类型
animationDurationnumber-Web: x; 微信小程序: x; Android: x; iOS: x; HarmonyOS: x; HarmonyOS(Vapor): 5.0窗口显示动画的持续时间,单位为 ms
eventsany-Web: 4.0; 微信小程序: 4.41; Android: x; iOS: x; HarmonyOS: 4.61; HarmonyOS(Vapor): 5.0页面间通信接口,用于监听被打开页面发送到当前页面的数据
success(result: NavigateToSuccess) => void-Web: 4.0; 微信小程序: 4.41; Android: √; iOS: 4.11; HarmonyOS: 4.61; HarmonyOS(Vapor): 5.0接口调用成功的回调函数
fail(result: NavigateToFail) => void-Web: 4.0; 微信小程序: 4.41; Android: √; iOS: 4.11; HarmonyOS: 4.61; HarmonyOS(Vapor): 5.0接口调用失败的回调函数
complete(result: NavigateToComplete) => void-Web: 4.0; 微信小程序: 4.41; Android: √; iOS: 4.11; HarmonyOS: 4.61; HarmonyOS(Vapor): 5.0接口调用结束的回调函数(调用成功、失败都会执行)
routeConfigany-Web: -; 微信小程序: 4.41; Android: -; iOS: -; HarmonyOS: -
routeOptionsany-Web: -; 微信小程序: 4.41; Android: -; iOS: -; HarmonyOS: -
routeTypestring-Web: -; 微信小程序: 4.41; Android: -; iOS: -; HarmonyOS: -
animationType 的属性描述
合法值兼容性描述
autoWeb: x; 微信小程序: -; Android: 4.18; iOS: 4.25; HarmonyOS: x自动选择动画效果
noneWeb: x; 微信小程序: -; Android: 4.18; iOS: 4.25; HarmonyOS: 4.61; HarmonyOS(Vapor): 5.0无动画效果
slide-in-rightWeb: x; 微信小程序: -; Android: 4.18; iOS: 4.25; HarmonyOS: x从右侧横向滑动效果
slide-in-leftWeb: x; 微信小程序: -; Android: 4.18; iOS: 4.25; HarmonyOS: x从左侧横向滑动效果
slide-in-topWeb: x; 微信小程序: -; Android: 4.18; iOS: 4.25; HarmonyOS: x从上侧竖向滑动效果
slide-in-bottomWeb: x; 微信小程序: -; Android: 4.18; iOS: 4.25; HarmonyOS: x从下侧竖向滑动效果
fade-inWeb: x; 微信小程序: -; Android: 4.18; iOS: 4.25; HarmonyOS: x从完全透明到不透明逐渐显示
zoom-outWeb: x; 微信小程序: -; Android: 4.18; iOS: 4.25; HarmonyOS: x在屏幕中间从小到大逐渐放大显示
zoom-fade-outWeb: x; 微信小程序: -; Android: 4.18; iOS: 4.25; HarmonyOS: x从大逐渐缩小并且从不透明到透明逐渐隐藏关闭动画
pop-inWeb: x; 微信小程序: -; Android: 4.18; iOS: 4.25; HarmonyOS: 4.61; HarmonyOS(Vapor): 5.0从右侧平移出栈动画效果

NavigateToSuccess 的属性值 @navigatetosuccess-values

名称类型必备默认值兼容性描述
errMsgstring-Web: -; 微信小程序: -; Android: -; iOS: -; HarmonyOS: -

NavigateToFail 的属性值 @navigatetofail-values

名称类型必备默认值兼容性描述
errCodenumber-Web: -; 微信小程序: -; Android: -; iOS: -; HarmonyOS: -路由错误码
  • 4: 框架内部异常 | | errSubject | string | 是 | - | Web: -; 微信小程序: -; Android: -; iOS: -; HarmonyOS: - | 统一错误主题(模块)名称 | | data | any | 否 | - | Web: -; 微信小程序: -; Android: -; iOS: -; HarmonyOS: - | 错误信息中包含的数据 | | cause | Error | 否 | - | Web: -; 微信小程序: -; Android: -; iOS: -; HarmonyOS: - | 源错误信息,可以包含多个错误,详见SourceError | | errMsg | string | 是 | - | Web: -; 微信小程序: -; Android: -; iOS: -; HarmonyOS: - | |

NavigateToComplete 的属性值 @navigatetocomplete-values

名称类型必备默认值兼容性描述
errMsgstring-Web: -; 微信小程序: -; Android: -; iOS: -; HarmonyOS: -

返回值

类型必备
Promise<NavigateToSuccess>

Promise<NavigateToSuccess> 的属性描述

名称类型必备默认值兼容性描述
errMsgstring-Web: -; 微信小程序: -; Android: -; iOS: -; HarmonyOS: -
<!-- UTSAPIJSON.navigateTo.example -->

参见

uni.redirectTo(options) @redirectto

关闭当前页面,跳转到应用内的某个页面

redirectTo 兼容性

Web微信小程序AndroidiOSHarmonyOSHarmonyOS(Vapor)
4.04.414.114.615.0

参数

名称类型必填默认值兼容性描述
optionsRedirectToOptions-Web: -; 微信小程序: -; Android: -; iOS: -; HarmonyOS: -

options 的属性描述

名称类型必备默认值兼容性描述
urlstring (string.PageURIString)-Web: 4.0; 微信小程序: 4.41; Android: √; iOS: 4.11; HarmonyOS: 4.61; HarmonyOS(Vapor): 5.0需要跳转的应用内非 tabBar 的页面的路径 , 路径后可以带参数
success(result: RedirectToSuccess) => void-Web: 4.0; 微信小程序: 4.41; Android: √; iOS: 4.11; HarmonyOS: 4.61; HarmonyOS(Vapor): 5.0接口调用成功的回调函数
fail(result: RedirectToFail) => void-Web: 4.0; 微信小程序: 4.41; Android: √; iOS: 4.11; HarmonyOS: 4.61; HarmonyOS(Vapor): 5.0接口调用失败的回调函数
complete(result: RedirectToComplete) => void-Web: 4.0; 微信小程序: 4.41; Android: √; iOS: 4.11; HarmonyOS: 4.61; HarmonyOS(Vapor): 5.0接口调用结束的回调函数(调用成功、失败都会执行)

RedirectToSuccess 的属性值 @redirecttosuccess-values

名称类型必备默认值兼容性描述
errMsgstring-Web: -; 微信小程序: -; Android: -; iOS: -; HarmonyOS: -

RedirectToFail 的属性值 @redirecttofail-values

名称类型必备默认值兼容性描述
errCodenumber-Web: -; 微信小程序: -; Android: -; iOS: -; HarmonyOS: -路由错误码
  • 4: 框架内部异常 | | errSubject | string | 是 | - | Web: -; 微信小程序: -; Android: -; iOS: -; HarmonyOS: - | 统一错误主题(模块)名称 | | data | any | 否 | - | Web: -; 微信小程序: -; Android: -; iOS: -; HarmonyOS: - | 错误信息中包含的数据 | | cause | Error | 否 | - | Web: -; 微信小程序: -; Android: -; iOS: -; HarmonyOS: - | 源错误信息,可以包含多个错误,详见SourceError | | errMsg | string | 是 | - | Web: -; 微信小程序: -; Android: -; iOS: -; HarmonyOS: - | |

RedirectToComplete 的属性值 @redirecttocomplete-values

名称类型必备默认值兼容性描述
errMsgstring-Web: -; 微信小程序: -; Android: -; iOS: -; HarmonyOS: -

返回值

类型必备
Promise<RedirectToSuccess>

Promise<RedirectToSuccess> 的属性描述

名称类型必备默认值兼容性描述
errMsgstring-Web: -; 微信小程序: -; Android: -; iOS: -; HarmonyOS: -
<!-- UTSAPIJSON.redirectTo.example -->

参见

uni.reLaunch(options) @relaunch

关闭所有页面,打开到应用内的某个页面

reLaunch 兼容性

Web微信小程序AndroidiOSHarmonyOSHarmonyOS(Vapor)
4.04.414.114.615.0

参数

名称类型必填默认值兼容性描述
optionsReLaunchOptions-Web: -; 微信小程序: -; Android: -; iOS: -; HarmonyOS: -

options 的属性描述

名称类型必备默认值兼容性描述
urlstring (string.PageURIString)-Web: 4.0; 微信小程序: 4.41; Android: √; iOS: 4.11; HarmonyOS: 4.61; HarmonyOS(Vapor): 5.0需要跳转的应用内页面路径 , 路径后可以带参数。参数与路径之间使用?分隔,参数键与参数值用=相连,不同参数用&分隔;如 'path?key=value&key2=value2',如果跳转的页面路径是 tabBar 页面则不能带参数
success(result: ReLaunchSuccess) => void-Web: 4.0; 微信小程序: 4.41; Android: √; iOS: 4.11; HarmonyOS: 4.61; HarmonyOS(Vapor): 5.0接口调用成功的回调函数
fail(result: ReLaunchFail) => void-Web: 4.0; 微信小程序: 4.41; Android: √; iOS: 4.11; HarmonyOS: 4.61; HarmonyOS(Vapor): 5.0接口调用失败的回调函数
complete(result: ReLaunchComplete) => void-Web: 4.0; 微信小程序: 4.41; Android: √; iOS: 4.11; HarmonyOS: 4.61; HarmonyOS(Vapor): 5.0接口调用结束的回调函数(调用成功、失败都会执行)

ReLaunchSuccess 的属性值 @relaunchsuccess-values

名称类型必备默认值兼容性描述
errMsgstring-Web: -; 微信小程序: -; Android: -; iOS: -; HarmonyOS: -

ReLaunchFail 的属性值 @relaunchfail-values

名称类型必备默认值兼容性描述
errCodenumber-Web: -; 微信小程序: -; Android: -; iOS: -; HarmonyOS: -路由错误码
  • 4: 框架内部异常 | | errSubject | string | 是 | - | Web: -; 微信小程序: -; Android: -; iOS: -; HarmonyOS: - | 统一错误主题(模块)名称 | | data | any | 否 | - | Web: -; 微信小程序: -; Android: -; iOS: -; HarmonyOS: - | 错误信息中包含的数据 | | cause | Error | 否 | - | Web: -; 微信小程序: -; Android: -; iOS: -; HarmonyOS: - | 源错误信息,可以包含多个错误,详见SourceError | | errMsg | string | 是 | - | Web: -; 微信小程序: -; Android: -; iOS: -; HarmonyOS: - | |

ReLaunchComplete 的属性值 @relaunchcomplete-values

名称类型必备默认值兼容性描述
errMsgstring-Web: -; 微信小程序: -; Android: -; iOS: -; HarmonyOS: -

返回值

类型必备
Promise<ReLaunchSuccess>

Promise<ReLaunchSuccess> 的属性描述

名称类型必备默认值兼容性描述
errMsgstring-Web: -; 微信小程序: -; Android: -; iOS: -; HarmonyOS: -
<!-- UTSAPIJSON.reLaunch.example -->

参见

uni.switchTab(options) @switchtab

跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面

switchTab 兼容性

Web微信小程序AndroidiOSHarmonyOSHarmonyOS(Vapor)
4.04.414.114.615.0

参数

名称类型必填默认值兼容性描述
optionsSwitchTabOptions-Web: -; 微信小程序: -; Android: -; iOS: -; HarmonyOS: -

options 的属性描述

名称类型必备默认值兼容性描述
urlstring (string.PageURIString)-Web: 4.0; 微信小程序: 4.41; Android: √; iOS: 4.11; HarmonyOS: 4.61; HarmonyOS(Vapor): 5.0需要跳转的 tabBar 页面的路径,路径后不能带参数
success(result: SwitchTabSuccess) => void-Web: 4.0; 微信小程序: 4.41; Android: √; iOS: 4.11; HarmonyOS: 4.61; HarmonyOS(Vapor): 5.0接口调用成功的回调函数
fail(result: SwitchTabFail) => void-Web: 4.0; 微信小程序: 4.41; Android: √; iOS: 4.11; HarmonyOS: 4.61; HarmonyOS(Vapor): 5.0接口调用失败的回调函数
complete(result: SwitchTabComplete) => void-Web: 4.0; 微信小程序: 4.41; Android: √; iOS: 4.11; HarmonyOS: 4.61; HarmonyOS(Vapor): 5.0接口调用结束的回调函数(调用成功、失败都会执行)

SwitchTabSuccess 的属性值 @switchtabsuccess-values

名称类型必备默认值兼容性描述
errMsgstring-Web: -; 微信小程序: -; Android: -; iOS: -; HarmonyOS: -

SwitchTabFail 的属性值 @switchtabfail-values

名称类型必备默认值兼容性描述
errCodenumber-Web: -; 微信小程序: -; Android: -; iOS: -; HarmonyOS: -路由错误码
  • 4: 框架内部异常 | | errSubject | string | 是 | - | Web: -; 微信小程序: -; Android: -; iOS: -; HarmonyOS: - | 统一错误主题(模块)名称 | | data | any | 否 | - | Web: -; 微信小程序: -; Android: -; iOS: -; HarmonyOS: - | 错误信息中包含的数据 | | cause | Error | 否 | - | Web: -; 微信小程序: -; Android: -; iOS: -; HarmonyOS: - | 源错误信息,可以包含多个错误,详见SourceError | | errMsg | string | 是 | - | Web: -; 微信小程序: -; Android: -; iOS: -; HarmonyOS: - | |

SwitchTabComplete 的属性值 @switchtabcomplete-values

名称类型必备默认值兼容性描述
errMsgstring-Web: -; 微信小程序: -; Android: -; iOS: -; HarmonyOS: -

返回值

类型必备
Promise<SwitchTabSuccess>

Promise<SwitchTabSuccess> 的属性描述

名称类型必备默认值兼容性描述
errMsgstring-Web: -; 微信小程序: -; Android: -; iOS: -; HarmonyOS: -
<!-- UTSAPIJSON.switchTab.example -->

参见

uni.navigateBack(options?) @navigateback

关闭当前页面,返回上一页面或多级页面

Web微信小程序AndroidiOSHarmonyOSHarmonyOS(Vapor)
4.04.414.114.615.0

参数

名称类型必填默认值兼容性描述
optionsNavigateBackOptions-Web: -; 微信小程序: -; Android: -; iOS: -; HarmonyOS: -

options 的属性描述

名称类型必备默认值兼容性描述
deltanumber-Web: 4.0; 微信小程序: 4.41; Android: √; iOS: 4.11; HarmonyOS: 4.61; HarmonyOS(Vapor): 5.0返回的页面数,如果 delta 大于现有页面数,则返回到首页
animationTypestring-Web: x; 微信小程序: x; Android: 4.18; iOS: 4.25; HarmonyOS: -窗口关闭的动画类型
animationDurationnumber-Web: x; 微信小程序: x; Android: x; iOS: x; HarmonyOS: x窗口关闭动画的持续时间,单位为 ms
success(result: NavigateBackSuccess) => void-Web: 4.0; 微信小程序: 4.41; Android: √; iOS: x; HarmonyOS: -接口调用成功的回调函数
fail(result: NavigateBackFail) => void-Web: 4.0; 微信小程序: 4.41; Android: √; iOS: 4.11; HarmonyOS: 4.61; HarmonyOS(Vapor): 5.0接口调用失败的回调函数
complete(result: NavigateBackComplete) => void-Web: 4.0; 微信小程序: 4.41; Android: √; iOS: 4.11; HarmonyOS: 4.61; HarmonyOS(Vapor): 5.0接口调用结束的回调函数(调用成功、失败都会执行)
animationType 的属性描述
合法值兼容性描述
autoWeb: x; 微信小程序: -; Android: 4.18; iOS: 4.25; HarmonyOS: x自动选择动画效果
noneWeb: x; 微信小程序: -; Android: 4.18; iOS: 4.25; HarmonyOS: 4.61; HarmonyOS(Vapor): 5.0无动画效果
slide-out-rightWeb: x; 微信小程序: -; Android: 4.18; iOS: 4.25; HarmonyOS: x横向向右侧滑出屏幕动画
slide-out-leftWeb: x; 微信小程序: -; Android: 4.18; iOS: 4.25; HarmonyOS: x横向向左侧滑出屏幕动画
slide-out-topWeb: x; 微信小程序: -; Android: 4.18; iOS: 4.25; HarmonyOS: x竖向向上侧滑出屏幕动画
slide-out-bottomWeb: x; 微信小程序: -; Android: 4.18; iOS: 4.25; HarmonyOS: x竖向向下侧滑出屏幕动画
fade-outWeb: x; 微信小程序: -; Android: 4.18; iOS: 4.25; HarmonyOS: x从不透明到透明逐渐隐藏动画
zoom-inWeb: x; 微信小程序: -; Android: 4.18; iOS: 4.25; HarmonyOS: x从大逐渐缩小关闭动画
zoom-fade-inWeb: x; 微信小程序: -; Android: 4.18; iOS: 4.25; HarmonyOS: x从大逐渐缩小并且从不透明到透明逐渐隐藏关闭动画
pop-outWeb: x; 微信小程序: -; Android: 4.18; iOS: 4.25; HarmonyOS: 4.61; HarmonyOS(Vapor): 5.0从右侧平移出栈动画效果

NavigateBackSuccess 的属性值 @navigatebacksuccess-values

名称类型必备默认值兼容性描述
errMsgstring-Web: -; 微信小程序: -; Android: -; iOS: -; HarmonyOS: -

NavigateBackFail 的属性值 @navigatebackfail-values

名称类型必备默认值兼容性描述
errCodenumber-Web: -; 微信小程序: -; Android: -; iOS: -; HarmonyOS: -路由错误码
  • 4: 框架内部异常 | | errSubject | string | 是 | - | Web: -; 微信小程序: -; Android: -; iOS: -; HarmonyOS: - | 统一错误主题(模块)名称 | | data | any | 否 | - | Web: -; 微信小程序: -; Android: -; iOS: -; HarmonyOS: - | 错误信息中包含的数据 | | cause | Error | 否 | - | Web: -; 微信小程序: -; Android: -; iOS: -; HarmonyOS: - | 源错误信息,可以包含多个错误,详见SourceError | | errMsg | string | 是 | - | Web: -; 微信小程序: -; Android: -; iOS: -; HarmonyOS: - | |

NavigateBackComplete 的属性值 @navigatebackcomplete-values

名称类型必备默认值兼容性描述
errMsgstring-Web: -; 微信小程序: -; Android: -; iOS: -; HarmonyOS: -

返回值

类型必备
Promise<NavigateBackSuccess>

Promise<NavigateBackSuccess> 的属性描述

名称类型必备默认值兼容性描述
errMsgstring-Web: -; 微信小程序: -; Android: -; iOS: -; HarmonyOS: -
<!-- UTSAPIJSON.navigateBack.example -->

参见

示例

示例为hello uni-app x alpha分支,与最新HBuilderX Alpha版同步。与最新正式版同步的master分支示例另见 ::: preview https://hellouniappx.dcloud.net.cn/web/#/pages/API/navigator/navigator

appRedirect https://hellouniappx.dcloud.net.cn/appredirect.html?path=pages/API/navigator/navigator

示例

vue
<template>
  <!-- #ifdef APP -->
  <scroll-view style="flex: 1">
  <!-- #endif -->
    <view>
      <page-head title="navigate"></page-head>
      <view style="flex-direction: row;">
        <switch @change="onChange"></switch>
        <view class="uni-title">是否启用共享元素动画</view>
      </view>
      <share-element :share-key="data.shareElementKey">
        <image style="width: 250px; height: 176px;" src="/static/shuijiao.jpg" mode="scaleToFill"></image>
      </share-element>
      <text style="font-size: 13px;" >注意:开启共享元素动画后仅支持slide-in-right和fade-in动画效果</text>
      <view class="uni-padding-wrap uni-common-mt uni-common-mb">
        <view class="direction-row">
          <text class="label">onLoad触发时间戳:</text>
          <text>{{ data.onLoadTime }}</text>
        </view>
        <view class="direction-row">
          <text class="label">onShow触发时间戳:</text>
          <text>{{ data.onShowTime }}</text>
        </view>
        <view class="direction-row">
          <text class="label">onReady触发时间戳:</text>
          <text>{{ data.onReadyTime }}</text>
        </view>
        <view class="direction-row">
          <text class="label">onHide触发时间戳:</text>
          <text>{{ data.onHideTime }}</text>
        </view>
        <view class="direction-row">
          <text class="label">onBackPress触发时间戳:</text>
          <text>见控制台</text>
        </view>
        <view class="direction-row">
          <text class="label">onUnload触发时间戳:</text>
          <text>见控制台</text>
        </view>
        <view class="uni-btn-v">
          <button @tap="navigateTo" class="uni-btn">
            跳转新页面,并传递数据
          </button>
          <button @tap="navigateBack" class="uni-btn">返回上一页</button>
          <button @tap="redirectTo" class="uni-btn">在当前页面打开</button>
          <button @tap="switchTab" class="uni-btn">切换到模板选项卡</button>
          <button @tap="reLaunch" class="uni-btn">
            关闭所有页面,打开首页
          </button>
          <button @tap="navigateToErrorPage" class="uni-btn">
            打开不存在的页面
          </button>
          <button v-for="(item, _) in data.animationTypeList" @tap="navigateToAnimationType(item)"
            class="uni-btn">navigateTo动画({{item}})</button>
          <button class="uni-btn" @click="goOnLoadCallAPI">测试 onLoad 调用 API</button>
        </view>
      </view>
    </view>
  <!-- #ifdef APP -->
  </scroll-view>
  <!-- #endif -->
</template>

<script setup lang="uts">
  import { state, setLifeCycleNum } from '@/store/index.uts'
  type AnimationType = "slide-in-right" | "slide-in-left" | "slide-in-top" | "slide-in-bottom" | "pop-in" | "fade-in" | "zoom-out" | "zoom-fade-out" | "none" | "auto"

  type DataType = {
    onLoadTime: number;
    onShowTime: number;
    onReadyTime: number;
    onHideTime: number;
    shareElementKey: string;
    animationTypeList: string[];
  }

  const data = reactive({
    onLoadTime: 0,
    onShowTime: 0,
    onReadyTime: 0,
    onHideTime: 0,
    shareElementKey: "",
    animationTypeList: [
      'slide-in-right',
      'slide-in-left',
      'slide-in-top',
      'slide-in-bottom',
      'pop-in',
      'fade-in',
      'zoom-out',
      'zoom-fade-out',
      'none'
    ]
  } as DataType)
  onLoad(() => {
    data.onLoadTime = Date.now()
    console.log('onLoad', data.onLoadTime)
  })

  onPageShow(() => {
    data.onShowTime = Date.now()
    console.log('onShow', data.onShowTime)
  })

  onReady(() => {
    data.onReadyTime = Date.now()
    console.log('onReady', data.onReadyTime)
  })

  onPageHide(() => {
    data.onHideTime = Date.now()
    console.log('onHide', data.onHideTime)
  })

  onBackPress((options : OnBackPressOptions) : boolean | null => {
    console.log('onBackPress', Date.now())
    console.log('onBackPress from', options.from)
    return null
  })

  onUnload(() => {
    console.log('onUnload', Date.now())
  })
  const reLaunch = () => {
    uni.reLaunch({
      url: '/pages/tabBar/component',
      success(result) {
        console.log('reLaunch success', result.errMsg)
        // 自动化测试
        setLifeCycleNum(state.lifeCycleNum + 1)
      },
      fail(error) {
        console.log('reLaunch fail', error.errMsg)
        // 自动化测试
        setLifeCycleNum(state.lifeCycleNum - 1)
      },
      complete(result) {
        console.log('reLaunch complete', result.errMsg)
        // 自动化测试
        setLifeCycleNum(state.lifeCycleNum + 1)
      },
    })
  }

  const navigateTo = () => {
    uni.navigateTo({
      url: '/pages/API/navigator/new-page/new-page-1?data=Hello',
      success(result) {
        console.log('navigateTo success', result.errMsg)
        // 自动化测试
        setLifeCycleNum(state.lifeCycleNum + 1)
      },
      fail(error) {
        console.log('navigateTo fail', error.errMsg)
        // 自动化测试
        setLifeCycleNum(state.lifeCycleNum - 1)
      },
      complete(result) {
        console.log('navigateTo complete', result.errMsg)
        // 自动化测试
        setLifeCycleNum(state.lifeCycleNum + 1)
      },
    })
  }

  const navigateToAnimationType = (animationType : AnimationType) => {
    uni.navigateTo({
      url: '/pages/API/navigator/new-page/new-page-1?data=Hello',
      animationType: animationType,
      success(result) {
        console.log('navigateTo success', result.errMsg)
        // 自动化测试
        setLifeCycleNum(state.lifeCycleNum + 1)
      },
      fail(error) {
        console.log('navigateTo fail', error.errMsg)
        // 自动化测试
        setLifeCycleNum(state.lifeCycleNum - 1)
      },
      complete(result) {
        console.log('navigateTo complete', result.errMsg)
        // 自动化测试
        setLifeCycleNum(state.lifeCycleNum + 1)
      },
    })
  }

  const navigateToErrorPage = () => {
    uni.navigateTo({
      url: '/pages/error-page/error-page',
      success(result) {
        console.log('navigateTo success', result.errMsg)
        // 自动化测试
        setLifeCycleNum(state.lifeCycleNum - 1)
      },
      fail(error) {
        console.log('navigateTo fail', error.errMsg)
        uni.showToast({
          title: error.errMsg,
          icon: 'none',
        })
        // 自动化测试
        setLifeCycleNum(state.lifeCycleNum + 1)
      },
      complete(result) {
        console.log('navigateTo complete', result.errMsg)
        // 自动化测试
        setLifeCycleNum(state.lifeCycleNum + 1)
      },
    })
  }

  const navigateToDebounce = () => {
    uni.navigateTo({
      url: '/pages/API/navigator/new-page/new-page-1?data=debounce',
      success(result) {
        console.log('navigateTo success', result.errMsg)
        // 自动化测试
        setLifeCycleNum(state.lifeCycleNum + 1)
      },
      fail(error) {
        console.log('navigateTo fail', error.errMsg)
        // 自动化测试
        setLifeCycleNum(state.lifeCycleNum - 1)
      },
      complete(result) {
        console.log('navigateTo complete', result.errMsg)
        // 自动化测试
        setLifeCycleNum(state.lifeCycleNum + 1)
      },
    })
    uni.navigateTo({
      url: '/pages/API/navigator/new-page/new-page-1?data=debounce',
      success(result) {
        console.log('navigateTo success', result.errMsg)
        // 自动化测试
        setLifeCycleNum(state.lifeCycleNum - 1)
      },
      fail(error) {
        console.log('navigateTo fail', error.errMsg)
        // 自动化测试
        setLifeCycleNum(state.lifeCycleNum + 1)
      },
      complete(result) {
        console.log('navigateTo complete', result.errMsg)
        // 自动化测试
        setLifeCycleNum(state.lifeCycleNum + 1)
      },
    })
  }

  // 自动化测试
  const navigateToRelativePath1 = () => {
    uni.navigateTo({
      url: 'new-page/new-page-1?data=new-page/new-page-1',
      success() {
        setLifeCycleNum(state.lifeCycleNum + 1)
      },
      fail() {
        setLifeCycleNum(state.lifeCycleNum - 1)
      },
      complete() {
        setLifeCycleNum(state.lifeCycleNum + 1)
      },
    })
  }

  // 自动化测试
  const navigateToRelativePath2 = () => {
    uni.navigateTo({
      url: './new-page/new-page-1?data=./new-page/new-page-1',
      success() {
        setLifeCycleNum(state.lifeCycleNum + 1)
      },
      fail() {
        setLifeCycleNum(state.lifeCycleNum - 1)
      },
      complete() {
        setLifeCycleNum(state.lifeCycleNum + 1)
      },
    })
  }

  // 自动化测试
  const navigateToRelativePath3 = () => {
    uni.navigateTo({
      url: '../navigator/new-page/new-page-1?data=../navigator/new-page/new-page-1',
      success() {
        setLifeCycleNum(state.lifeCycleNum + 1)
      },
      fail() {
        setLifeCycleNum(state.lifeCycleNum - 1)
      },
      complete() {
        setLifeCycleNum(state.lifeCycleNum + 1)
      },
    })
  }

  const navigateBack = () => {
    uni.navigateBack({
      success(result) {
        console.log('navigateBack success', result.errMsg)
        // 自动化测试
        setLifeCycleNum(state.lifeCycleNum + 1)
      },
      fail(error) {
        console.log('navigateBack fail', error.errMsg)
        // 自动化测试
        setLifeCycleNum(state.lifeCycleNum - 1)
      },
      complete(result) {
        console.log('navigateBack complete', result.errMsg)
        // 自动化测试
        setLifeCycleNum(state.lifeCycleNum + 1)
      },
    })
  }

  const navigateBackWithDelta1 = () => {
    uni.navigateTo({
      url: '/pages/API/navigator/new-page/new-page-1',
      success() {
        uni.navigateBack({
          delta: 1,
          success(result) {
            console.log('navigateBack success', result.errMsg)
            // 自动化测试
            setLifeCycleNum(state.lifeCycleNum + 1)
          },
          fail(error) {
            console.log('navigateBack fail', error.errMsg)
            // 自动化测试
            setLifeCycleNum(state.lifeCycleNum - 1)
          },
          complete(result) {
            console.log('navigateBack complete', result.errMsg)
            // 自动化测试
            setLifeCycleNum(state.lifeCycleNum + 1)
          },
        })
      },
    })
  }

  const navigateBackWithDelta100 = () => {
    uni.navigateTo({
      url: '/pages/API/navigator/new-page/new-page-1',
      success() {
        uni.navigateBack({
          delta: 100,
          success(result) {
            console.log('navigateBack success', result.errMsg)
            // 自动化测试
            setLifeCycleNum(state.lifeCycleNum + 1)
          },
          fail(error) {
            console.log('navigateBack fail', error.errMsg)
            // 自动化测试
            setLifeCycleNum(state.lifeCycleNum - 1)
          },
          complete(result) {
            console.log('navigateBack complete', result.errMsg)
            // 自动化测试
            setLifeCycleNum(state.lifeCycleNum + 1)
          },
        })
      },
    })
  }

  const redirectTo = () => {
    uni.redirectTo({
      url: '/pages/API/navigator/new-page/new-page-1?data=Hello',
      success(result) {
        console.log('redirectTo success', result.errMsg)
        // 自动化测试
        setLifeCycleNum(state.lifeCycleNum + 1)
      },
      fail(error) {
        console.log('redirectTo fail', error.errMsg)
        // 自动化测试
        setLifeCycleNum(state.lifeCycleNum - 1)
      },
      complete(result) {
        console.log('redirectTo complete', result.errMsg)
        // 自动化测试
        setLifeCycleNum(state.lifeCycleNum + 1)
      },
    })
  }

  const switchTab = () => {
    uni.switchTab({
      url: '/pages/tabBar/template',
      success(result) {
        console.log('switchTab success', result.errMsg)
        // 自动化测试
        setLifeCycleNum(state.lifeCycleNum + 1)
      },
      fail(error) {
        console.log('switchTab fail', error.errMsg)
        // 自动化测试
        setLifeCycleNum(state.lifeCycleNum - 1)
      },
      complete(result) {
        console.log('switchTab complete', result.errMsg)
        // 自动化测试
        setLifeCycleNum(state.lifeCycleNum + 1)
      },
    })
  }

  // 自动化测试
  const getLifeCycleNum = () : number => {
    return state.lifeCycleNum
  }

  // 自动化测试
  const setLifeCycleNumWrapper = (num : number) => {
    setLifeCycleNum(num)
  }

  const onChange = (event: UniSwitchChangeEvent) => {
    if(event.detail.value) {
      data.shareElementKey = "test-share-element-key"
    } else {
      data.shareElementKey = ""
    }
  }

  const goOnLoadCallAPI = () => {
    uni.navigateTo({
      url: '/pages/API/navigator/new-page/onLoad-call-api'
    })
  }

</script>

<style>
  .direction-row {
    flex-direction: row;
  }

  .label {
    width: 190px;
  }
</style>

:::

通用类型

GeneralCallbackResult

名称类型必备默认值兼容性描述
errMsgstring-Web: -; 微信小程序: 4.41; Android: -; iOS: -; HarmonyOS: -错误信息

页面跳转与参数传递

A页面跳转到B页面时,有两种方式给B页面传递信息:

  1. A页面跳转时,B页面的URL中通过?param1=param1value&param2=param2value方式传递,然后B页面在Onload里接收参数。详见页面onLoad生命周期
  2. 通过eventbus,详见uni.$on、uni.$emit等API

Bug & Tips@tips

  • navigateTo, redirectTo 只能打开非 tabBar 页面。
  • switchTab 只能打开 tabBar 页面。
  • reLaunch 可以打开任意页面。
  • 页面底部的 tabBar 由页面决定,即只要是定义为 tabBar 的页面,底部都有 tabBar
  • 不能在首页 onReady 之前进行页面跳转。