微信小程序從入坑到放棄之坑十二:navigator無法跳轉的坑


轉自:http://www.yilingsj.com/xwzj/2018-11-25/weixin-miniprogram-navigator.html

微信小程序中的頁面跳轉用navigator就行了,但如果需要跳轉的頁面路徑跟系統底欄tabBar中的相同時,就無法跳轉了......

這個navigator本來該放前面說的,不知道怎么回事就寫漏掉了,現在補上來。

一、navigator是什么?

微信小程序官方釋義為:頁面鏈接。文檔地址:
developers.weixin.qq.com/miniprogram/dev/component/navigator.html。此時我們應該知道這東西可以干嘛了,就是類似網頁中的a標簽的用途。

二、navigator有什么坑?

這一切還要從我們的設計稿說起。在首頁的時候,可以看到底欄是一個tabBar,一共是有5個鏈接的。如圖:微信小程序之商城項目首頁tabBar底欄截圖我們再來看下我的訂單頁面。如圖:微信小程序之商城項目我的訂單頁面可以看到有“查看物流”、“確認收貨”兩個按鈕。由於當時頁面不完整,所以就直接讓其跳轉到了首頁,也就是:/pages/index/index頁面

按理說,這沒毛病對吧。反正navigator是用來做超鏈接跳轉用的,而且這個首頁地址也是存在的。但是!神奇的事情出現了!那就是:此時我的訂單頁面中的這兩個鏈接無法跳轉到首頁,點擊此頁面的商品圖是可以成功跳轉到商品詳情頁的!

此時出現這種結果,讓我很是懵逼!不科學啊,這頁面地址明明有的啊,為什么不跳轉呢?!

三、當跳轉的鏈接跟tabBar中pagePath的路徑相同時無法跳轉

一臉懵逼只是從網上搜索,於是后經搜索才得知:當跳轉的鏈接跟tabBar中pagePath的路徑相同時無法跳轉

怎么理解呢?我們來看下app.json中的tabBar代碼吧。如圖:app.json中tabBar中出現了首頁的路徑可以看到list數組里的第一個對象的pagePath就是pages/index/index

四、解決方法:open-type=switchTab

在文檔中有這樣一個屬性名-- open-type,釋義是:跳轉方式。一共有6個值,分別是:
navigate,保留當前頁面,跳轉到應用內的某個頁面。但是不能跳到 tabBar 頁面。使用 wx.navigateBack 可以返回到原頁面。;
redirect,關閉當前頁面,跳轉到應用內的某個頁面。但是不允許跳轉到 tabBar 頁面。;
switchTab,跳轉到 tabBar 頁面,並關閉其他所有非 tabBar 頁面;
reLaunch,關閉所有頁面,打開到應用內的某個頁面;
navigateBack,關閉當前頁面,返回上一頁面或多級頁面。可通過 getCurrentPages() 獲取當前的頁面棧,決定需要返回幾層。;
exit,退出小程序,target="miniProgram"時生效;
一堆描述,其實我也不知道描述的是啥!(想看官方文檔的可拉上面找鏈接。)主要還是因為不能充分理解 tabBar 頁面到底是啥!只好按照網上說的方法操作,把訂單頁面中的那兩個按鈕都添加上open-type="switchTab"。然后一保存再點擊就可以跳轉了,開森!

由於當時自己對兩個以上按鈕都用了component組件進行封裝,所以這個坑在別的地方又突顯了出來!

五、open-type=switchTab也有坑

需要注意的是:switchTab只能跳轉到 tabBar 頁面!!!。什么意思呢?拿首頁的設計稿來說,底部的tabBar 里面有5個頁面的鏈接,而在使用這個switchTab時,跳轉的鏈接需要是這5個鏈接里面的才行,不在這5個鏈接內的繼續使用open-type="switchTab"是無法跳轉的!

別問我是怎么知道的,因為我掉坑中了!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM