QR 코드 스캔 QR 코드 업로드
도메인 스토어
링크 차단을 방지할 플랫폼 유형 선택
허용된 플랫폼 유형 선택

小程序如何添加跳转链接?完整配置步骤与常见问题解答

做小程序开发,页面跳转是绕不开的基础课。小程序主打轻量和便捷,如果页面切换生硬,或者数据传递出了岔子,用户体验就会大打折扣。其实,实现页面跳转无非就那几种常规方式,但里面藏着不少容易踩坑的细节。



很多从 H5 转过来的开发者,一开始总习惯性地想找 <a> 标签写个 href。但在小程序的原生环境里,并没有直接对应的 <a> 标签,取而代之的是 <navigator> 组件。



<navigator url="/pages/index/index" hover-class="navigator-hover">
返回首页
</navigator>


使用 <navigator> 最大的好处在于它是“声明式”的,不需要额外编写 JS 逻辑。它还自带了一些小程序特有的属性,比如通过 hover-class 自定义点击时的反馈样式,或者利用 open-type 直接调用微信的分享、客服等开放能力。这比单纯绑定一个点击事件去触发跳转要省事得多,也更符合小程序的开发规范。

不过,如果遇到复杂的业务场景,比如需要先校验表单、请求接口,拿到结果后再决定跳去哪儿,那就得靠 JS API 来帮忙了。

最常用的是 wx.navigateTo。它会保留当前页面并跳转到新页面,用户还能点击左上角返回。



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


但如果你希望跳转后用户“回不来”——比如支付成功后的结果页,肯定不希望用户再返回去重复支付——这时候就该用 wx.redirectTo,它会关闭当前页面再进行跳转。顺便提一句,如果是要跳到底部的 TabBar 页面,用前面这两个方法都会报错,必须换成 wx.switchTab。理清这几个 API 的边界,基本能帮你避开日常开发中 80% 的跳转白屏或报错问题。

跳转往往伴随着数据传递。比如从列表页点进详情页,总得告诉详情页展示哪条数据。最简单的做法是在 URL 后面拼上 query 参数:

<navigator url="/pages/detail/detail?id=123">
查看详情
</navigator>


这里有个新手很容易踩的坑:在目标页面里试图用 wx.getStorageSync 去读这个参数。其实,getStorageSync 是用来读取本地缓存的,URL 上的 query 参数必须通过页面的生命周期函数 onLoad 来接收。

onLoad(options) {
console.log(options.id); // 这里就能拿到 123
}




另外要注意的是,URL 传参有长度限制,而且只能传递字符串。如果要传一个复杂的对象,建议先用 JSON.stringify 进行序列化,或者干脆把数据存到全局状态(如 Vuex、Redux)或本地缓存里,跳转过去后再通过 ID 去读取。这样处理,代码会健壮得多。

说到底,无论是用组件还是调 API,技术实现本身并不复杂。真正考验功底的是,你能不能根据不同的业务场景选择最合适的跳转方式,并把页面间的数据流转设计得清晰合理。把跳转这件小事做顺滑了,小程序的整体质感自然就上去了。