【小程序】小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'
    })
})
相关推荐
黄华SJ520it1 天前
预约上门系统开发:懒人经济下的商业机遇与技术实践
小程序·系统开发
软件技术新观察1 天前
2026年北京教育医疗小程序与APP定制开发:十大服务商实力测评
大数据·小程序
万岳科技程序员小金1 天前
真人数字人小程序如何开发?AI数字人平台搭建流程全面解析
人工智能·小程序·ai数字人系统源码·ai数字人平台搭建·ai数字人小程序开发
didiplus2 天前
我在GitHub刷到一个诗词API,顺手写了款小程序
微信小程序
言乐62 天前
Python实现可运行解密游戏游戏框架
python·游戏·小程序·游戏程序·关卡设计
2501_915106322 天前
iOS 软件测试工具性能监控、日志分析 KeyMob、Instruments等
android·ios·小程序·https·uni-app·iphone·webview
云迈科技-软件定制开发2 天前
2026 AI智能体小程序APP开发怎么做:从场景规划到上线交付的完整参考
大数据·人工智能·小程序
小码哥0682 天前
医院陪诊小程序怎么开发-医院陪诊小程序源码功能-微信小程序 医院健康陪诊陪护系统
微信小程序·小程序·医院陪诊·陪诊系统·陪诊陪诊
书中枫叶3 天前
从「上次几点喂奶」到全栈小程序:我做了个喂宝助手
mongodb·微信小程序·node.js
黄华SJ520it3 天前
柯尔嫚商城模式开发:从概念到实现的完整指南
小程序·系统开发