微信小程序开发微信小程序微信小程序开发者

微信小程序登录组件封装 —— 一次性解决需要已登录状态才能继续的

2018-12-12  本文已影响111人  韦弦Zhy
微信登录组件

需要已登录状态才能继续操作这个具体应用场景我相信产品经理们能够给你一个详情解答

这里我们具体分析一下:
当然其中登录还有以下情况:

本组件实现方式是:

js主要代码
    // 未登录状态
    //获取用户信息
    handleUserInfo: function (e) {
      if (e.detail.errMsg ===
        "getUserInfo:ok") {
        wx.showLoading({
          title: '登录中...',
          mask: true,
        });

        // 这里是一个登录的相关操作的封装,引入的外部js文件
        // login().then(() => {
        //   this.triggerEvent('onLoginSuccess', {
        //     payload: this.data.payload
        //   })
        // })

        //模拟登录
        setTimeout(() => {
          wx.setStorageSync('isLogin', true);
          wx.hideLoading();
          this.triggerEvent('onLoginSuccess', {
            payload: this.data.payload
          })
        }, 2000) 

      } else {
        wx.showToast({
          title: "登录失败,请稍后重试",
          icon: 'none'
        });
      }
    },

    //已登录状态
    handleTap: function () {
      this.triggerEvent('onLoginSuccess', {
        payload: this.data.payload
      })
    }
wml主要代码
<view class='container' bindtap="handleTap" wx:if="{{isLogin}}">
    <slot></slot>
</view>
<view class='container' wx:else>
    <button
            class='auth'
            open-type="getUserInfo"
            bindgetuserinfo="handleUserInfo"
    >
        授权登录
    </button>
    <slot></slot>
</view>
  
wxss代码
.container{
    position: relative;
}
.auth{
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    opacity: 0;
    z-index: 1000;
    font-size: 0;
    line-height: 0;
}
使用方法:
{
  "usingComponents": {
    "login-view": "../../component/login-view/login-view"
  }
}
<login-view hasLogin='{{hasLogin}}' payload='sendInData<AnyType>' bind:onLoginSuccess="jumpToLogsPage">
   <view class='login'>已登录状态才能跳转</view>
</login-view>
  onShow: function () {
    this.setData({
      hasLogin: wx.getStorageSync('isLogin')
    })
  },
 /**
  * 点击事件原来需要做的操作
  * 登录成功后自动继续做这个操作
  */
  jumpToLogsPage: function(data) {
    console.log("data:", data)
    wx.navigateTo({
      url: '../logs/logs'
    })
  }
下面是具体实例:

需要完整源码请上GitHub --> zy-login-view 获取

上一篇 下一篇

猜你喜欢

热点阅读