wx.redirectTo失效!
发布于 6 年前 作者 khao 19898 次浏览 来自 问答

我在APP.js中条用一个验证用户登录的方法,如果用户未登录跳转到登录页面 使用了 wx.redirectTo 方法,结果在PC端开发中好用,android手机好用但是在IOS手机上就失效了,我在方法中放了 fail 和 complete 两个回调函数结果两个回调函数都执行了,我想知道是什么问题。忘详细解答!!!

App({
  globalData: {
    uid: ''
  },
  onLaunch: function () {
    this.getLoginUser();
  },
  getLoginUser : function(){
    let uid = Boolean(this.globalData.uid);
    if(!uid){
      console.log("用户未登录")
      wx.redirectTo({
        url: 'pages/login/login',
        fail:function(){
          console.log('跳转失败')
        },
        complete:function(){
          console.log('跳转成功')
        }
      })
    }
  },
  getUserInfo: function (cb) {
    var that = this;
    if (this.globalData.userInfo) {
      typeof cb == "function" && cb(this.globalData.userInfo)
    } else {
      //调用登录接口
      wx.login({
        success: function () {
          wx.getUserInfo({
            success: function (res) {
              that.globalData.userInfo = res.userInfo
              typeof cb == "function" && cb(that.globalData.userInfo)
            }
          })
        }
      })
    }
  }
})
4 回复

fail: function (err) { console.error(err) }

把这个错误信息输出来看看

wx.navigateTo({

      url: 'pages/login/login',

      success: function(res){

        

      },

      fail: function() {

        

      },

      complete: function() {

        

      }

    })

嗯,这个,你的程序逻辑和时序似乎有点问题:1)app onlaunch的时候,首页页面还没有生成,而wx.redirectto是“关闭当前页面,跳转到应用内的某个页面”;2)你的程序逻辑,是在第一个页面还没有生成就想跳转到另一个页面,那个uid总是空的嘛。逻辑上,应该是先调用wx.login(先调用getuserinfo),判断用户是否同意登录,再决定是否跳到另一个页面撒,或者,在首页设置一个登录按钮

你的登录页是不是在tabBar中啊

回到顶部