做过抽奖小程序的开发者都有体会,这类应用虽然核心是“抽奖”,但外围的配套页面一点不少。活动规则、中奖记录、填写领奖地址的客服或外部页面,基本都是标配。这就意味着,页面间的跳转交互是绕不开的基础功能。在小程序里实现这些跳转,主要分声明式和编程式两种思路。
先说最直接的声明式跳转,也就是通过组件标签来实现。这里要提醒一个新手常踩的坑:很多从 Web 前端转来的开发者,习惯性地想写个 <a> 标签。但在原生微信小程序中,标准的页面跳转组件其实是 <navigator>。除非你是在 rich-text 富文本组件里解析后台返回的 HTML,否则常规开发中请认准 <navigator>。
比如,在抽奖主页底部加一个“查看抽奖规则”的文字链,代码很简单:
<navigator url="/pages/rules/rules" class="rule-link">抽奖规则</navigator>
把目标页面路径填在
url 属性里就行。这种方式代码语义清晰,省去了在 JS 里写事件绑定的麻烦,非常适合那些固定的、不需要额外逻辑判断的静态跳转。
但抽奖场景往往没那么简单。比如用户点击“立即抽奖”,你得先判断他有没有授权登录,或者有没有完成分享助力,条件满足了才能跳到结果页。这时候,纯标签跳转就搞不定了,得靠编程式的 API 来接管。

在点击事件的处理函数里,我们可以调用微信提供的路由 API:
Page({
goToRulesPage: function() {
wx.navigateTo({
url: '/pages/rules/rules'
})
}
})

用户触发点击时执行
goToRulesPage 函数,通过 wx.navigateTo 完成跳转。这种方式把控制权交给了 JS,你可以随时插入条件判断、数据请求或埋点上报,灵活度极高。既然用到了 API 跳转,有几个实际开发中容易踩坑的细节得重点留意。最常用的是
navigateTo,它会保留当前页面并打开新页面。但要注意,小程序的页面栈最多只能容纳 10 层,层级太深就会报错。如果你希望跳转后用户不能点返回键回到上一页——比如到了抽奖结果页,不想让用户退回重抽——那就得用
redirectTo。它会关闭当前页面,直接替换成目标页面。至于 navigateBack,就是单纯的返回上一页,通常用在自定义导航栏的返回按钮上。合理搭配这三个 API,才能把用户的浏览动线理顺。不管是用标签做静态引导,还是用 API 做动态控制,核心都是为了让抽奖流程走得顺畅。标签跳转胜在轻量快捷,API 跳转赢在逻辑严密。实际项目中,两者往往是打配合的:简单的规则说明交给标签,核心的抽奖交互交给 API。把这两手准备做足,小程序的页面流转自然也就丝滑了。
Войти сейчас