【小程序】小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'
    })
})
相关推荐
m0_587383001 小时前
24小时自助健身房软硬件解决方案实战:从架构设计到部署指南
java·spring·小程序·架构·需求分析
CRMEB系统商城2 小时前
前后端技术栈全面换代!CRMEB 多商户(Java)v3.0更新预告
java·开发语言·小程序·php
醒目803 小时前
从图像到拼豆图纸:像素化生成与色板匹配技术实践
微信小程序
2501_916007475 小时前
苹果应用商店App Store上架费用标准及原因解析
android·ios·小程序·https·uni-app·iphone·webview
00后程序员张1 天前
苹果App Store上架指南:费用、原理与步骤详解
android·ios·小程序·https·uni-app·iphone·webview
paopaokaka_luck1 天前
个人综合管理小程序(echarts数据看板、健康数据记录与趋势查看、目标拆解和进度管理、日程待办与番茄钟、习惯打卡、收支统计、个人生活记录、跨模块智能提醒)
前端·javascript·spring·小程序·数据分析·echarts·生活
愚公搬代码1 天前
【愚公系列】《微信小程序项目实战(AI编程+视频图解)》002-一张新地图:AI创业的核心分析框架
人工智能·微信小程序·ai编程
m0_587383002 天前
广州24小时自助健身房解决方案实战指南与系统部署要点
java·spring·小程序·架构·需求分析
ZeroNews内网穿透2 天前
企业内网穿透别再用随机域名!自有域名实现 OA/ERP 公网安全访问
微信小程序·内网穿透·erp·zeronews·运维实战·企业oa·自有域名
m0_587383002 天前
西安同城拼车软件开发实战指南:从零搭建高效系统
人工智能·小程序·数据挖掘·系统架构·需求分析