QR कोड स्कैन करें QR कोड अपलोड करें
Domen store
लिंक को अवरुद्ध होने से बचाने के लिए एंटी-रेड प्लेटफॉर्म प्रकार चुनें
एक्सेस की अनुमति वाले प्लेटफॉर्म प्रकार चुनें

微信小程序怎么实现页面跳转

在微信小程序里,页面跳转几乎是每个项目都会用到的功能。从商品列表进入详情页、从活动入口打开落地页,或者切换底部导航,本质上都依赖页面跳转。小程序提供几种跳转方式,写法都不复杂,但行为差异不小,选错了可能会影响返回逻辑,甚至出现跳不过去的情况。



如果跳转入口直接写在页面结构里,用 navigator 组件会更直观。比如跳到一个普通页面,可以这样写:

<navigator url="/pages/secondPage/secondPage">跳转到第二个页面</navigator>




用户点击这个组件就会跳到 url 指定的页面。如果希望用重定向方式跳转,也就是关闭当前页后再打开新页面,可以加上 open-type="redirect":

<navigator url="/pages/secondPage/secondPage" open-type="redirect">重定向跳转</navigator>


navigator 的这两种用法,对应的是下面要说的两个 JS API。组件适合放首页固定按钮这类静态入口;如果跳转前要判断、拼参数,或者写在事件回调里,用 JS API 会更灵活。



在 JS 代码里,最常用的跳转是 wx.navigateTo。它会保留当前页面,再打开一个新页面,用户点左上角返回时还能回到原来的页面:



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


如果不想让用户返回上一页,比如登录成功后不希望再回到登录页,可以换成 wx.redirectTo。它会用新页面替换当前页面,当前页会被关闭,返回时不会再出现:

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


这里有个容易被忽略的点:wx.navigateTo 只适用于非 tabBar 页面。如果目标页是底部导航里的页面,用 navigateTo 会跳不过去。另外,navigateTo 打开的新页面会一层层叠加,小程序对页面栈有层级限制,连续跳转太多可能会失败。遇到“跳不动”的情况,可以先检查是不是层级太深,必要时用 redirectTo 替换,或者先返回上一页再继续跳。

底部导航页面则需要用专门的方法 wx.switchTab。只要目标页面配置在 app.json 的 tabBar 里,就不能用 navigateTo 或 redirectTo 跳,必须用 switchTab:

wx.switchTab({
url: '/pages/secondPage/secondPage'
})


switchTab 的行为也不同,它会关闭所有非 tabBar 页面,直接切到对应的 tab 页面,适合做主导航切换。注意 url 必须是 app.json 的 tabBar.list 里已经配置过的路径,否则会报错。

日常使用中按场景区分就好:普通页面且希望保留返回路径,用 navigateTo 或 navigator 默认跳转;不想保留当前页,用 redirectTo;目标页是底部 tab 页面,用 switchTab。把这几类分清楚,大多数页面切换需求都能覆盖,也能减少线上跳转异常。