【小程序】小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'
    })
})
相关推荐
游戏开发爱好者86 小时前
React Grab工具详解:AI助力Vue3、Svelte和Solid前端元素调试
android·ios·小程序·https·uni-app·iphone·webview
维双云6 小时前
做一个教培类做题类型的小程序多少钱?
小程序
小羊Yveesss6 小时前
2026年商家小程序外卖怎么找骑手?
小程序
ze^06 小时前
Day05 APP应用&微信小程序&原生态开发&H5+Vue技术&封装打包&反编译抓包点
vue.js·微信小程序·小程序
程序鉴定师1 天前
深圳小程序公司推荐 助力企业数字化转型优质服务商
大数据·小程序
用户8574824354801 天前
useList 通用列表管理hook
vue.js·微信小程序
陪小甜甜赏月1 天前
微信小程序分享onShareAppMessage
前端·微信小程序·小程序
weikecms1 天前
本地生活 CPS 返利小程序搭建,支持外卖 + 出行 + 加油 + 酒店
小程序·生活
ZC跨境爬虫2 天前
模块化烹饪小程序开发日记 Day7:(菜谱详情接口开发与JSON数据读取全流程)
前端·javascript·css·ui·微信小程序·json
AI砖家2 天前
微信小程序包体积优化与分包实战:从2M困境到优雅突破
微信小程序·小程序·notepad++·分包·小程序体积压缩