小程序页面跳转的几个方法和区别

本文详细介绍了微信小程序中五种页面跳转方式的特点与使用场景,包括navigateTo、redirectTo、reLaunch、switchTab及navigator组件的用法,帮助开发者更好地理解和运用小程序的导航功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目前小程序的几个页面跳转方式的主要区别就两点:

  • 1.是否可以返回上一个页面
  • 2.目标页面是否是tabBar

两个通用属性

  • 1.限制:目前页面路径最多只能十层。
    -2.分类:wx.navigateTowx.redirectTo不允许跳转到 tabbar 页面,只能用 wx.switchTab 跳转到 tabbar 页面

下面是对几个跳转方式的整理说明


1.wx.navigateTo({})

保留当前页面,跳转到应用内的某个页面,使用 wx.navigateBack 可以返回;

关于Url参数:

  • 不能跳转到tabBar页面
  • 带参格式:【路径】?【参数键1】=【参数值】& 【参数键2】=【参数值】
wx.navigateTo({
    url:'../test/test?id=1&page=4',//跳转页面的路径,可带参数?隔开,不同参数用 & 分隔;相对路径,不需要.wxml后缀
    success:function(){}        //成功后的回调;
    fail:function(){}          //失败后的回调;
    complete:function(){}      //结束后的回调(成功,失败都会执行)
})

传递的参数在接收页面onLoad()函数中得到值:option.id就可以得到了
onLoad: function (option) {
  console.log(option)//可以打印一下option看查看参数
    this.setData({
        id:option.id,
});
1.1.wx.navigateBack(OBJECT)

关闭当前页面,返回上一页面或多级页面。
可通过 getCurrentPages()) 获取当前的页面栈,决定需要返回几层。

关于参数:

delta–>类型:Number,
默认值:1 ,
说明:返回的页面数,如果 delta 大于现有页面数,则返回到首页。

注意:调用 navigateTo 跳转时,调用该方法的页面会被加入堆栈,而 redirectTo 方法则不会。见下方示例代码

// 此处是A页面
wx.navigateTo({
  url: 'B?id=1'
})

// 此处是B页面
wx.navigateTo({
  url: 'C?id=1'
})

// 在C页面内 navigateBack,将返回A页面
wx.navigateBack({
  delta: 2
})

2.wx.redirectTo(OBJECT)

关闭(之前的页面是回不去的)当前页面,跳转到非tabBar的某个页面

关于Url参数:

  • 不能跳转到tabBar页面
  • 【路径】?【参数键1】=【参数值】& 【参数键2】=【参数值】

3.wx.reLaunch(OBJECT)

关闭(之前的页面是回不去的)所有页面,打开到应用内的某个页面。

关于Url参数:

  • 【路径】?【参数键1】=【参数值】& 【参数键2】=【参数值】
  • 【如果是跳转到tabBar页面,则不能带参数】

4.wx.switchTab(OBJECT)

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

关于参数:

  • 目标页面必须是在:app.json 的 tabBar 中定义的页面
  • 不能带参数
wx.switchTab({ 
    url: '/pages/home/home' 
});

5.组件

直接写在布局里面的跳转方式

参数说明:
- url:和上面几种方式的规则一样,当前小程序内的跳转链接
- open-type(跳转方式):有效值如下表

参数说明
navigate对应 wx.navigateTo 或 wx.navigateToMiniProgram 的功能
redirect对应 wx.redirectTo 的功能
switchTab对应 wx.switchTab 的功能
reLaunch对应 wx.reLaunch 的功能
navigateBack对应 wx.navigateBack 的功能

eg:

<navigator url="/pages/detail/detail">点击跳转</navigator>


参考:小程序官方文档

### 微信小程序页面跳转的方式及其区别 微信小程序提供了多种页面跳转方式,每种方式都有其特定的应用场景特点。以下是几种主要的页面跳转方法以及它们之间的区别: #### 1. **`<navigator>` 标签跳转** 通过 `<navigator>` 标签可以直接在 WXML 文件中实现页面跳转。 ```html <navigator url="/pages/1/1"> <button>点我,跳转到第一页</button> </navigator> ``` 这种方式简单直观,适合静态页面间的跳转[^1]。需要注意的是,`url` 属性必须指定有效的目标页面路径,否则跳转会失败。 --- #### 2. **`wx.navigateTo`** 这是一个常用的 API 方法,用于保留当前页面跳转至新的页面。 ```javascript wx.navigateTo({ url: '/page/home/home?user_id=111', }); ``` - 特点: - 新页面会被压入栈顶,而当前页面仍然存在于导航栈中。 - 用户可以通过 `wx.navigateBack` 返回至上一页面。 - 不允许跳转到 TabBar 页面。 - 跳转层数有限制,默认最多可打开十个页面[^2]。 --- #### 3. **`wx.redirectTo`** 与 `wx.navigateTo` 类似,但它不会保存当前页面的状态,而是直接替换掉当前页面。 ```javascript wx.redirectTo({ url: '/pages/logs/logs', }); ``` - 特点: - 当前页面会被销毁,新页面成为唯一的活动页面。 - 用户无法通过返回操作回到之前的页面。 - 同样不允许跳转到 TabBar 页面[^3]。 --- #### 4. **`wx.switchTab`** 专门用于跳转到 TabBar 页面。 ```javascript wx.switchTab({ url: '/pages/index/index', }); ``` - 特点: - 只能用来切换 TabBar 页面。 - 不能携带参数传递数据。 - 当前非 TabBar 页面会被关闭,用户只能停留在 TabBar 页面之间进行切换[^3]。 --- #### 5. **`wx.reLaunch`** 重新加载整个应用,并跳转到指定页面。 ```javascript wx.reLaunch({ url: '/pages/home/home', }); ``` - 特点: - 清空导航栈中的所有页面,仅保留目标页面作为唯一入口。 - 常见用途包括从某些功能页面快速返回首页或其他固定页面。 - 支持跳转到任意页面(包括 TabBar 页面)[^3]。 --- #### 6. **`wx.navigateBack`** 返回上一层或多层页面。 ```javascript wx.navigateBack({ delta: 1, // 表示返回几层页面,默认为1 }); ``` - 特点: - 需要配合 `wx.navigateTo` 使用,因为只有后者才会将页面推入导航栈。 - 参数 `delta` 控制返回的层次数量,最大不超过十层[^3]。 --- ### 方式对比表 | 方法名称 | 是否保留当前页面 | 是否支持带参 | 是否支持 TabBar 页面 | 场景描述 | |------------------|------------------|--------------|-----------------------|--------------------------------------------------------------------------| | `<navigator>` | 是 | 是 | 否 | 简单静态页面跳转 | | `wx.navigateTo` | 是 | 是 | 否 | 多级页面嵌套时使用 | | `wx.redirectTo` | 否 | 是 | 否 | 替换当前页面 | | `wx.switchTab` | 否 | 否 | 是 | 切换 TabBar 页面 | | `wx.reLaunch` | 否 | 是 | 是 | 快速清空导航栈并进入某一页面 | | `wx.navigateBack` | 否 | 否 | 否 | 返回上一级或多级页面 | --- ### 注意事项 1. 如果希望实现从第三级页面直接返回首页的效果,可以结合 `wx.navigateTo` `wx.redirectTo` 的特性设计跳转逻辑[^3]。 2. 对于复杂业务流程,建议合理规划页面层级关系,避免因过多嵌套导致性能下降或用户体验不佳。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值