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)) }
提示:小程序默认不支持跨应用跳转,需使用小程序跳转功能(需企业账号)