1. 声明式导航(组件跳转)

使用  组件实现(类似HTML的标签)

  跳转详情页  重定向首页  切换到首页

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. 需要注意的是

  1. 路径规则url 必须以 / 开头,对应 app.json 中注册的页面路径

  2. 参数限制:传递对象需转成字符串(JSON.stringify

  3. tabBar限制switchTab 不能传参,需用全局变量或缓存

  4. 页面事件:跳转后触发目标页的 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))
}

提示:小程序默认不支持跨应用跳转,需使用小程序跳转功能(需企业账号)