做小程序开发,页面跳转是绝对绕不开的高频操作。无论是引导用户看商品详情、去订单结算,还是简单的功能导航,跳转逻辑的顺畅度直接决定了整个产品的“手感”。
在 WXML 层面,最省事的方式是用原生的 <navigator> 组件。它自带链接语义,不用额外写 JS,很适合那种纯粹的、不需要前置校验的简单跳转。但在真实的业务场景里,开发者往往更喜欢给 <view>、<button> 或 <text> 这类普通标签绑定 bindtap 事件。原因也很现实:实际业务很少有那么理想化的情况,你大概率需要在跳转前检查用户的登录状态、校验表单数据,或者动态拼接一些查询参数。

比如写一个 <view bindtap="goToDetail">查看详情</view>,然后在 JS 的对应方法里调用路由 API。这种把控制权完全交给 JS 的做法,灵活性要高得多。不仅如此,除了点击,你还能结合滑动、长按等手势来触发跳转,只要事件绑定得当,交互形式可以玩出很多花样。
说到 JS 层面的路由 API,最常用的无非是 wx.navigateTo 和 wx.redirectTo。新手很容易把这俩搞混,其实它们的核心区别就在于对“页面栈”的处理。navigateTo 会保留当前页面,把新页面压入栈中,用户点返回键还能退回来;而 redirectTo 则是直接关掉当前页,用新页面替换它,用户就回不去了。
弄懂了这一点,场景选择就清晰了。像“首页进详情”这种常规流转,用 navigateTo 就行;但如果是“支付成功结果页”或“新手引导页”,用户操作完本来就不需要再退回去,这时候用 redirectTo 更合适。这不仅符合操作直觉,还能避免页面栈过度堆积——毕竟小程序的页面栈最多只支持 10 层,超了就会报错。顺便提一句,如果要跳转的是底部的 TabBar 页面,记得必须用 wx.switchTab,用普通的导航方法可是跳不过去的。
除了选对 API,在处理跳转交互时,还有个细节特别容易被忽略:防重复点击。谁都不想看到用户因为手抖连击,导致同一个页面被重复创建好几次,甚至引发白屏卡顿。在触发跳转的方法里加个简单的状态锁定,或者在跳转前拉起一个全局 loading,都能让体验平滑不少。
页面跳转看似只是几行代码的事,但背后牵扯的是页面生命周期、内存占用以及用户的操作直觉。把基础的路由 API 用对、用好,多考虑一步边界情况,小程序的交互质感自然也就上去了。

지금 로그인