• 小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'
        })
    })
  • 相关阅读:
    Android Button上的文字自动变成大写,如何解决呢?
    如何在IamgeButton上面添加文字
    C语言之实现函数返回一个数组,以及选择排序,还有折半查找。这是同学的一个作业。。。
    解决android:background背景图片被拉伸问题
    service&thread
    MS SQLServer Update语法和实例
    ztree2.6给菜单增加title提示信息[转]
    UltraEdit-14.10.0.1024版本语法着色配置
    linux下c++动态库的生成及使用
    c++动态库与静态库
  • 原文地址:https://www.cnblogs.com/moqiutao/p/14722748.html
Copyright © 2020-2023  润新知