当前位置 博文首页 > 你见过思念放过谁的博客:**微信小程序之登录后返回登录前的页面

    你见过思念放过谁的博客:**微信小程序之登录后返回登录前的页面

    作者:[db:作者] 时间:2021-09-02 22:18

    小程序交流群:609690978

    在实际开发过程中,由于接口的各种限制条件,比如下单操作,就需要用户进行登录才能进行调用,如果用户登录之后留在了登录页,这个操作就很不友好了,非常影响用户体验,这时候我们就需要登陆后返回上一个页面。然而在用户登录之后再返回之前的页面怎么操作呢?思路是:首先,我要知道用户之前在哪个页面进行操作。其次,我们需要获取到这个页面的路由。最后,再登录后返回该路由。但是有时候,这些页面也是携带了参数的,需要登录之后带参数返回(其实说白了,就类似于一个完整的url,只是小程序中没有ip+端口号,直接就是路径+参数,要全部获取到。)

    那么,用户在哪些页面操作时可能需要进行登录操作?这个就去问你们后台吧,哪些接口需要登录之后调用,在调用该接口的页面获取路由就好了。另外,你也可以在app.js里全局获取。这里我们要用到getCurrentPages()方法

    所以,整个流程则是:
    1.获取路由和路由参数。
    在这里插入图片描述
    2.拼接路由(getCurrentPages方法获取到的是单独的两个对象,不是完整的url,当参数过多时需要用&自行拼接)
    在这里插入图片描述
    3.登录
    在这里插入图片描述
    4.返回
    在这里插入图片描述
    在这里插入图片描述

    以下是两个方法,可用于封装后直接调用,也可以直接写在app.js中:

    /*获取当前页带参数的url*/
    function getUrl() {
      var pages = getCurrentPages() //获取加载的页面
      var currentPage = pages[pages.length - 1] //获取当前页面的对象
      var url = currentPage.route //当前页面url
      wx.setStorageSync('Router', `/${url}`)
      var options = currentPage.options //如果要获取url中所带的参数可以查看options
    
      //参数多时通过&拼接url的参数
      var urlWithArgs = url + '?'
      for (var key in options) {
        var value = options[key]
        urlWithArgs += key + '=' + value + '&'
      }
      urlWithArgs = urlWithArgs.substring(0, urlWithArgs.length - 1)
      wx.setStorageSync('Url', `/${urlWithArgs}`)
    }
    
    // 获取当前页面路由
    function getRouter() { //此方法跟上面一个方法前四行一致,只是这里是获取路由不是拼接参数的
      var pages = getCurrentPages() //获取加载的页面
      var currentPage = pages[pages.length - 1] //获取当前页面的对象
      var router = currentPage.route //当前页面url
      wx.setStorageSync('Router', `/${router}`)
    }
    

    然后就是登录后路由跳转和处理用户数据的一些逻辑了,这里我只讲一个跳转的问题:如下代码

        if (router === '/pages/index/index') {
          wx.switchTab({
            url: url,
          })
        } else {
          wx.redirectTo({
            url: url,
          })
        }
    

    很明显啊,要做一个判断,如果是主页过来的,你可以让它跳回去也可以不跳回去,一般是没这个必要的。
    其次,如果你要跳回去,而且主页是tabbar,就得注意了,小程序的tabbar跳转方法是switchTab,切记,如果你获取的路由是你tabbar上的路由的话,一定要用switchTab去跳转,否则直接用redirectTo跳转就行了。

    Over

    小程序交流群:609690978

    cs