路由跳轉(zhuǎn)的方法
wx.switchTab:跳轉(zhuǎn)到 tabBar 頁面猪瞬,并關(guān)閉其他所有非 tabBar 頁面
wx.reLaunch:關(guān)閉所有頁面,打開到應(yīng)用內(nèi)的某個頁面
wx.redirectTo:關(guān)閉當(dāng)前頁面富岳,跳轉(zhuǎn)到應(yīng)用內(nèi)的某個頁面蛔糯。但是不允許跳轉(zhuǎn)到 tabbar 頁面
wx.navigateTo:保留當(dāng)前頁面,跳轉(zhuǎn)到應(yīng)用內(nèi)的某個頁面窖式。但是不能跳到 tabbar 頁面蚁飒。使用 wx.navigateBack 可以返回到原頁面。小程序中頁面棧最多十層
wx.navigateBack:關(guān)閉當(dāng)前頁面萝喘,返回上一頁面或多級頁面淮逻∏戆茫可通過 getCurrentPages 獲取當(dāng)前的頁面棧,決定需要返回幾層爬早。
簡單說明
(1)wx.switchTab:跳轉(zhuǎn)到 tabBar 頁面哼丈,并關(guān)閉其他所有非 tabBar 頁面
非 tabBar 頁面跳轉(zhuǎn)到 tabbar 頁面
首頁不是含tabBar 頁面,比如登錄頁筛严,歡迎頁醉旦,主頁含 tabBar 頁面。由首頁通過wx.redirectTo 跳轉(zhuǎn)到主頁時桨啃,沒有效果车胡。
經(jīng)測試需要這樣:非 tabBar 頁面 跳轉(zhuǎn)到 tabBar 頁面,必須通過 wx.switchTab 完成照瘾,不能用 wx.redirectTo 等其它方式匈棘。
(2)wx.reLaunch:關(guān)閉所有頁面,打開到應(yīng)用內(nèi)的某個頁面
個人感覺該方法的應(yīng)用場景如下:
打開多個頁面之后析命,要直接返回首頁主卫,此時之前的頁面都應(yīng)該關(guān)閉,然后打開首頁鹃愤。
(3)wx.redirectTo:關(guān)閉當(dāng)前頁面队秩,跳轉(zhuǎn)到應(yīng)用內(nèi)的某個頁面。但是不允許跳轉(zhuǎn)到 tabbar 頁面
應(yīng)用場景:從 tabbar 頁面跳轉(zhuǎn)到非 tabbar 頁面
wx.redirectTo昼浦,四級頁面跳轉(zhuǎn)到二級頁面馍资,會關(guān)掉四級頁面(當(dāng)前頁面),由二級頁面替換掉关噪,此時頁面棧中有兩個二級頁面鸟蟹。
(4)wx.navigateTo:保留當(dāng)前頁面,跳轉(zhuǎn)到應(yīng)用內(nèi)的某個頁面使兔。但是不能跳到 tabbar 頁面建钥。使用 wx.navigateBack可以返回到原頁面。小程序中頁面棧最多十層
使用 wx.navigateTo虐沥,打開一個頁面就會在頁面棧中增加一個頁面熊经,不會銷毀或關(guān)閉,直到打開10個頁面欲险。
** 注意**:之前镐依,頁面棧最多5層,新的官方文檔里說是最多10層天试,查看官方文檔:https://developers.weixin.qq.com/miniprogram/dev/api/route/wx.navigateTo.html
(5)wx.navigateBack:關(guān)閉當(dāng)前頁面槐壳,返回上一頁面或多級頁面∠裁浚可通過 getCurrentPages獲取當(dāng)前的頁面棧务唐,決定需要返回幾層雳攘。
開始我以為,wx.navigateBack 與 wx.navigateTo 對應(yīng)枫笛,wx.navigateTo 是一個個往頁面棧里加吨灭,wx.navigateBack 是依次從頁面棧中減掉。后來發(fā)現(xiàn) delta 字段刑巧,它可以跳著返回喧兄。
當(dāng)delta為1,一級一級跳海诲,頁面棧大小減1繁莹;
當(dāng)delta為2檩互,隔著跳特幔,從 A 頁面調(diào)到 C 頁面,中間有 B 頁面闸昨,A蚯斯、B都會關(guān)閉,頁面棧大小減2饵较;
以此類推拍嵌,直到棧底為止,也就是首頁
擴(kuò)展
wx.redirectTo 和 wx.switchTab 都是先清除棧中當(dāng)前的頁面循诉,然后目標(biāo)頁面進(jìn)棧横辆,使用這兩種跳轉(zhuǎn)方式,都不能通過系統(tǒng)的返回鍵回到上一個頁面茄猫,而是直接退出小程序狈蚤;
棧底的一級頁面,即為首頁划纽。
getCurrentPages:https://developers.weixin.qq.com/miniprogram/dev/reference/api/getCurrentPages.html