zoukankan      html  css  js  c++  java
  • 小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'
        })
    })
  • 相关阅读:
    AppBoxFuture(六): 前端组件化开发
    AppBoxFuture(五): 分布式文件存储-Store Everything
    Mysql自动填充测试数据
    萌新带你开车上p站(番外篇)
    B站百大UP主党妹被黑客勒索!!!
    合天网络靶场-大规模网络环境仿真服务平台
    XSS语义分析的阶段性总结(二)
    想学习CTF的一定要看这篇,让你学习效率提升80%
    XSS语义分析的阶段性总结(一)
    逆向入门分析实战(二)
  • 原文地址:https://www.cnblogs.com/moqiutao/p/14722748.html
Copyright © 2011-2022 走看看