小tips:微信小程序登錄后返回登錄前的頁面繼續操作(保留參數)


在app.js中添加如下兩個方法即可:

// 設置需要回調的地址
    setCallbackUrl: function(mode) {
        return new Promise((resolve,reject) => {
            let pages = getCurrentPages(); //獲取加載的頁面
            let currentPage = pages[pages.length - 1]; //獲取當前頁面的對象
            let urlPage = ''; // 存儲的跳轉地址
            let url = currentPage.route; //當前頁面url
            let argumentsStr = '';
            let options = currentPage.options; //如果要獲取url中所帶的參數可以查看options
            for (let key in options) {
                    let value = options[key];
                    argumentsStr += key + '=' + value + '&';
            }
            if(argumentsStr) {
                 argumentsStr = argumentsStr.substring(0, argumentsStr.length - 1);
                 urlPage = url + '?' + argumentsStr;
            } else {
                urlPage = url;
            }
            let callbackObj = {
                callbackUrl: `/${urlPage}`,
                mode: mode || 'redirectTo'
            }
             wx.setStorageSync('callbackObj', JSON.stringify(callbackObj));
             resolve();
        })
    },
    
    // 獲取本地可以回調的地址
    getCallBackUrl: function() {
        return new Promise((resolve,reject) => {
            const callbackObj = wx.getStorageSync('callbackObj');
            if(callbackObj) {
                let resultObj = JSON.parse(callbackObj);
                let callbackUrl = resultObj.callbackUrl;
                let mode = resultObj.mode;
                mode == 'redirectTo' && wx.redirectTo({url: callbackUrl});
                mode == 'switchTab' && wx.switchTab({url: callbackUrl});
                mode == 'reLaunch' && wx.reLaunch({url: callbackUrl});
                mode == 'navigateTo' && wx.navigateTo({url: callbackUrl});
            } else {
                reject();
            }
        })
    },
    

跳轉到登錄頁面前通過setCallbackUrl方法獲取即將跳轉的當前頁面,當登錄后調用getCallBackUrl方法,查看本地是否有需要跳轉的地址,沒有就在catch中執行登錄后的正常邏輯,比如跳轉到我的模塊頁面。代碼如下:

app.getCallBackUrl().catch(() => {
    // catch中執行默認的操作
    wx.redirectTo({
        url: '/pages/my/mycenter/mycenter'
    })
})

 


免責聲明!

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



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