文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

小程序前置授权组件如何开发

2023-06-26 09:20

关注

今天小编给大家分享一下小程序前置授权组件如何开发的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

思路

因为授权基本信息 / 手机号 必须使用小程序原生的的button,然后指定 open-type 后通过回调才能拿到相关信息( wx.getUserInfo() 已经不能弹窗啦,必须通过button弹窗),但是需要前置授权的点击区域样式又不一定是button的样式,所以决定使用一个透明的原生button 覆盖在点击区域之上,在视觉上实现无差别授权。通过是否授权字段来决定该按钮是否显示。

因为小程序中可能有多个需要相同授权的点击区域,所以决定用观察者模式来实现,即其中一个组件授权后,更新所有相同授权的组件,隐藏授权button。

样式

因为需要让授权button完全覆盖在点击区域之上,所以需要让slot里面的内容撑开父级定位元素,然后授权button绝对定位在该父元素内,宽高都设为100%即可。也可以通过小程序组件的 externalClasses 从组件外部指定样式。代码如下:

.wrapper {    position: relative;    width: 100%;    height: 100%;    .auth {      position: absolute;      width: 100%;      height: 100%;      opacity: 0;      top: 0;      left: 0;      z-index: 10;    }  }复制代码
<view class="wrapper m-class"><view bind:tap="handleTap">  <slot></slot></view><block wx:if="{{!authorized}}">  <button        class="auth"        open-type="{{openType}}"        bindgetphonenumber="getPhoneNumber"        bindgetuserinfo="getUserInfo">  </button></block>  </view>复制代码
 

逻辑

需要在组件外部绑定点击区域本身的点击事件,在已经授权的情况下会触发点击回调。

<authorization-block bind:action="callBack" m-class="xxx"><view class="u-m">xxxxxxx    </view></authorization-block>复制代码

详细代码:

import event from '../../utils/event'  Component({    externalClasses: ['m-class'],    properties: {      openType: {        type: String,        value: 'getUserInfo'      }    },    data: {      authorized: false    },    methods: {      getPhoneNumber ({detail}) {        const vm = this        if (detail.errMsg === 'getPhoneNumber:ok') {                    vm._triggerEvent(detail)        }      },      getUserInfo ({detail: {userInfo: {avatarUrl, nickName}, errMsg}}) {        const vm = this        if (errMsg === 'getUserInfo:ok') {                    vm._triggerEvent()        }      },      _triggerEvent (arg) {        const vm = this                event.triggerEvent([vm.data.config.eventName], true)        vm.triggerEvent('action', arg)      },      handleTap () {        const vm = this        vm.triggerEvent('action')      }    },    attached () {      const vm = this      let config      switch (vm.data.openType) {        case 'getUserInfo':          config = {            eventName: 'userInfo'          }          break        case 'getPhoneNumber':          config = {            eventName: 'phoneNumber'          }          break      }      if (getApp().globalData[config.eventName]) {        vm.setData({          authorized: true        })      } else {        event.addEventListener([config.eventName], vm, (authorized) => {          if (authorized) {            vm.setData({              authorized: true            })          }        })      }      vm.setData({        config      })    },    detached () {      const vm = this      event.removeEventListener([vm.data.config.eventName], vm)    }  })复制代码

其他

以上就是“小程序前置授权组件如何开发”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯