Escanear código QR Subir código QR
Tienda de dominios
Seleccione el tipo de plataforma anti-bloqueo para evitar que los enlaces sean interceptados
Seleccionar tipos de plataforma permitidos para acceso

如何通过小程序实现跳转链接

做过小程序开发的人都清楚,页面跳转几乎撑起了整个产品的骨架。用户从列表点进详情、下单后跳到支付结果页、看完内容返回首页——这些看起来理所当然的操作,背后全靠跳转逻辑在支撑。跳转写得顺,用户根本察觉不到页面的切换;写得别扭,整个体验就会变得卡顿生硬。

在小程序里实现跳转,大体有两条路:在 WXML 里用组件声明,或者在 JS 里调用 API。先从简单的说起。

最省事的方式是 navigator 组件。它相当于小程序世界里的超链接,在 WXML 里声明好目标地址就能直接用:

<navigator url="/pages/detail/detail">点击跳转到详情页</navigator>


一行 JS 都不用写,适合目标明确、不需要额外逻辑的跳转,比如"查看更多""返回首页"这类固定入口。



但跳转之前如果想做点别的事——先校验登录状态、先上报一次埋点,或者根据条件动态决定跳去哪——就得靠事件绑定了。随便找一个 view 或 button,绑上 tap 事件:

<view bindtap="jumpToDetailPage">点击跳转到详情页</view>


然后在对应的 JS 文件里实现这个方法:



Page({
jumpToDetailPage() {
wx.navigateTo({
url: '/pages/detail/detail'
})
}
})


触发方式也不局限于点击。滑动、长按、表单提交,任何事件都能成为跳转的起点,逻辑完全由你掌控。这正是事件绑定比纯组件声明灵活的地方。

再说 API 这条路。小程序提供的跳转方法不止一个,最常用的是 wx.navigateTo 和 wx.redirectTo。不少新手会混着用,其实两者的行为差别挺大。

wx.navigateTo 是"保留当前页面,打开新页面":用户在新页面点返回,还能回到原来的地方。它背后依赖页面栈的概念,每调用一次就往栈里压一层。需要注意的是,这个栈有层数上限,压得太深会导致后续跳转失败。所以遇到列表套详情、详情再套关联详情的连环场景,得格外小心。



wx.redirectTo 则是"关闭当前页面,打开新页面"。当前页直接从栈里被替换掉,用户按返回键也回不来。支付完成后跳到结果页、登录成功后跳到个人中心——这些"一去不复返"的节点用它正合适,免得用户退回到一个已经失效的页面。

wx.navigateTo({
url: '/pages/detail/detail'
})

wx.redirectTo({
url: '/pages/result/result'
})


除了这两个,还有几个方法值得记住。wx.switchTab 专门用来跳转 tabBar 页面,也就是底部导航栏里的那几个,navigateTo 和 redirectTo 对它们都无能为力;wx.reLaunch 会关闭所有页面再打开目标页,适合"退出登录回首页"这种需要彻底清空浏览历史的场景。

跳转时带参数也是家常便饭,直接拼在 url 后面就行:



wx.navigateTo({
url: '/pages/detail/detail?id=123&from=list'
})


目标页面在 onLoad 生命周期里通过 options 就能拿到这些值,再据此请求数据、渲染内容。列表页跳详情页这个最经典的场景,靠的正是这套机制。

几种方式其实没有绝对的高下之分,关键看场景是否匹配。纯展示型的入口,用 navigator 声明一下就够;需要逻辑判断的,交给事件绑定加 API;跳完之后不该让用户回头的,选 redirectTo 或 reLaunch;目标是 tabBar 页面的,老老实实走 switchTab。把这些规则摸熟,小程序里的页面流转基本就难不住你了。