您好,登錄后才能下訂單哦!
微信小程序tab頁面不能傳參解決方案:
1.設置全局變量,通過全局變量訪問
2.小程序本地存儲
小程序不支持tab頁面傳遞queryString參數,無論是navigator,還是通過api跳轉
遇到的問題如下:
小程序navigator組件默認不能跳轉到tabbar頁面
這個官方文檔寫了需要設置open-type為reLaunch或者switchTab,通過api跳轉的話同上
<navigator url="/page/index/index" open-type="switchTab">切換 Tab</navigator> api:wx.switchTab({}) / wx.reLaunch()
在跳轉時通過在點擊事件中設置本地存儲后在另一個頁面獲取不到的問題
通過wx.getStorage()獲取不到數據,遂改為了wx.getStorageSync()此種方式在開發者工具上可以獲取到,但是發現在部分android機型上無法獲取,猜測是因為navigator跳轉時可能并沒有立即存儲數據,導致另一邊獲取不到,于是改成了將數據保存為全局變量,而不是本地存儲,然而,此種方法還是有問題,在真機上部分機型會出現"OnWebviewEvent: goPage, WebViewId xxxxxxxxx not found"警告,猜測是navigator組件的問題,所以改用了下面這種辦法
1.改為通過api跳轉,
goToMall: function() { /* global_data 為小程序的全局變量, */ global_data.scenic_link_id = this.data.scenic_link_id; wx.switchTab({ url: '/pages/mall/index/index', }); }
2.在接收數據的onShow中接收,如果寫在onLoad中,在跳轉的時候不應該用wx.switchTab跳轉,而應該用wx.reLaunch跳轉,因為如果要跳轉的頁面以前已經被打開了,用switchTab并不會重新渲染頁面,只會把頁面棧中的這個頁面重新顯示出來
let id = global_data.scenic_link_id || "1"; // 獲取到值后清除,然后重新設置為默認值,這樣下次如果是從默認的頁面進來的話才會讀取默認的數據 if (id != "1") { global_data.scenic_link_id = "1" }; this.setData({ scenic_link_id: id }, () => { // 網絡請求 this.fetch(); });
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。