1. 声明式导航(组件跳转)
跳转详情页 重定向首页 切换到首页
2. 编程式导航(JS API跳转)
通过JavaScript动态控制跳转:
| 方法 | 作用 | 示例 |
|---|---|---|
wx.navigateTo | 保留当前页跳转 (生成页面栈) | ```js |
| wx.navigateTo({ | ||
| url: '/pages/detail/detail?name=test' | ||
| })``` | ||
wx.redirectTo | 关闭当前页跳转 (无返回按钮) | ```js |
| wx.redirectTo({ | ||
| url: '/pages/login/login' | ||
| })``` | ||
wx.switchTab | 跳转tabBar页面 | ```js |
| wx.switchTab({ | ||
| url: '/pages/home/home' | ||
| })``` | ||
wx.reLaunch | 关闭所有页打开新页 | ```js |
| wx.reLaunch({ | ||
| url: '/pages/index/index' | ||
| })``` | ||
wx.navigateBack | 返回上一页 | ```js |
| wx.navigateBack({ | ||
| delta: 1 // 返回层数 | ||
| })``` |
3. 跳转传参技巧
传递参数:
wx.navigateTo({
url: '/pages/detail/detail?id=100&title=商品详情' // 拼接参数
})接收参数(在目标页的onLoad中):
Page({
onLoad(options) {
console.log(options.id) // 输出 100
console.log(options.title) // 输出 "商品详情"
}
})4. 特殊场景处理
跳转tabBar页面:必须用
wx.switchTab或页面栈限制:最多10层,超限需用
redirectTo或reLaunch返回指定页面:
// 获取页面栈并控制返回
const pages = getCurrentPages()
wx.navigateBack({
delta: pages.length - 2 // 返回指定层级
})5. 需要注意的是
路径规则:
url必须以/开头,对应app.json中注册的页面路径参数限制:传递对象需转成字符串(
JSON.stringify)tabBar限制:
switchTab不能传参,需用全局变量或缓存页面事件:跳转后触发目标页的
onLoad→onShow→onReady
示例:
// 带复杂参数跳转
const params = {
id: 1001,
data: { name: '手机', price: 3999 }
}
wx.navigateTo({
url: `/pages/detail/detail?params=${encodeURIComponent(JSON.stringify(params))}`
})
// 目标页解析
onLoad(options) {
const params = JSON.parse(decodeURIComponent(options.params))
}提示:小程序默认不支持跨应用跳转,需使用小程序跳转功能(需企业账号)