【小程序】小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'
    })
})
相关推荐
GDAL3 小时前
软考鸭微信小程序:助力软考备考的便捷工具
微信小程序·小程序
技术闲聊DD5 小时前
小程序原生-列表渲染
小程序
2401_844137955 小时前
JAVA智慧社区系统跑腿家政本地生活商城系统小程序源码
微信·微信小程序·小程序·生活·微信公众平台·微信开放平台
45°仰望星空8 小时前
ASP.Net Core 获取微信小程序 OpenId 验证
后端·微信小程序·asp.net
程序员入门进阶8 小时前
4S店4S店客户管理系统小程序(lw+演示+源码+运行)
小程序
光影少年8 小时前
Vue Mini基于 Vue 3 的小程序框架
前端·vue.js·小程序
Minyy118 小时前
小程序-全局数据共享
开发语言·前端·小程序
guanpinkeji8 小时前
瑜伽馆预约小程序,在线瑜伽课程预约系统
小程序·团队开发·小程序开发·小程序制作·预约小程序·瑜伽馆·瑜伽馆预约系统
正小安9 小时前
用户登录与信息管理:实现小程序登录与用户信息存储
前端·微信小程序·小程序