1. 前言
在微信小程序中,页面之间的跳转是非常常见的操作,如何实现页面的跳转是小程序开发者要学习的基本技能之一。本文将详细介绍微信小程序中页面跳转的方式,并提供相应示例代码,希望能对小程序开发者有所帮助。
2. 页面跳转方式
2.1. 关于页面栈
在进入一个小程序后,微信小程序会为这个小程序创建一个页面栈,用来存储当前打开的所有页面。页面栈采用后进先出的方式,也就是说,栈顶是当前显示的页面,而栈底是小程序的首页。当小程序打开一个新页面时,该页面就会被加入到页面栈中。
在页面栈中,可以通过getCurrentPages()
方法获取到当前栈中的所有页面,返回一个数组,数组最后一项就是当前页面。可以在控制台执行以下代码查看:
console.log(getCurrentPages())
2.2. 页面跳转方式
在微信小程序中,可以使用以下方式进行页面跳转:
2.2.1. navigateTo
navigateTo
方式可以打开一个新页面,新页面在栈中的位置是当前页面的上一级,也就是说,新页面可以通过左上角的返回按钮返回到当前页面。
使用navigateTo
方式进行页面跳转的示例代码如下:
// pages/index/index.js
wx.navigateTo({
url: 'pages/login/login'
})
其中url
选项指定要跳转的页面路径,可以是绝对路径或相对路径,绝对路径以/开头,相对路径不以/开头。
2.2.2. redirectTo
redirectTo
方式可以关闭当前页面并打开一个新页面,新页面会替换当前页面在页面栈中的位置,也就是说,新页面不能通过左上角的返回按钮返回到当前页面。
使用redirectTo
方式进行页面跳转的示例代码如下:
// pages/login/login.js
wx.redirectTo({
url: 'pages/index/index'
})
2.2.3. reLaunch
reLaunch
方式可以关闭所有页面并打开一个新页面,新页面会成为页面栈的唯一页面。
使用reLaunch
方式进行页面跳转的示例代码如下:
// pages/user/user.js
wx.reLaunch({
url: 'pages/index/index'
})
2.2.4. switchTab
switchTab
方式可以跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面。
使用switchTab
方式进行页面跳转的示例代码如下:
// pages/index/index.js
wx.switchTab({
url: 'pages/home/home'
})
2.2.5. navigateBack
navigateBack
方式可以返回到页面栈中的指定页面,也可以返回到页面栈中的任意一个页面。
使用navigateBack
方式进行页面跳转的示例代码如下:
// pages/login/login.js
wx.navigateBack({
delta: 2 // 返回两级页面
})
其中delta
选项指定返回的页面数,如果没有指定delta
,默认返回上一级页面。
3. 页面传参方式
3.1. URL 传参
可以使用 URL 传参的方式在页面之间传递参数。在url
选项中可以对目标页面进行传参,例如:
// pages/home/home.js
wx.navigateTo({
url: 'pages/detail/detail?id=123&name=foo'
})
在目标页面可以通过options
属性获取传递过来的参数,例如:
// pages/detail/detail.js
Page({
onLoad: function (options) {
console.log(options.id) // 输出:123
console.log(options.name) // 输出:foo
}
})
3.2. Storage 传参
可以使用 Storage 传参的方式在页面之间传递参数。在当前页面可以将参数存储到 Storage 中,然后在目标页面中获取参数,例如:
// pages/home/home.js
wx.setStorageSync('id', '123')
wx.navigateTo({
url: 'pages/detail/detail'
})
// pages/detail/detail.js
Page({
onLoad: function () {
console.log(wx.getStorageSync('id')) // 输出:123
}
})
4. 跳转 API 的限制
4.1. 非 TabBar 页面跳转次数限制
由于页面栈的限制,非 TabBar 页面在单次跳转时最多只能跳转5次。这个限制是为了防止小程序卡死。
4.2. TabBar 页面的 switchTab 限制
switchTab
方式只能跳转到 tabBar 页面。
5. 总结
本文中介绍了微信小程序中页面跳转的方式和传参方法,并提供了相应的示例代码。在实际开发过程中,应该根据需求合理选择页面跳转方式,遵守跳转 API 的限制,以提升小程序的用户体验。