微信小程序-button组件

简介: 我这里废话不多说,很简单就是直接来使用这个组件,说下使用当中的注意点。

button


官方文档地址:https://developers.weixin.qq.com/miniprogram/dev/component/button.html


我这里废话不多说,很简单就是直接来使用这个组件,说下使用当中的注意点。


属性


!> 注意点:默认情况下小程序中的按钮是块级元素


size


设置按钮的大小:


?> 默认情况下 size 的取值为 default,显示的样式为:display:block


index.wxml:

<button size="default">我是按钮</button>


?> 如果设置 size 的取值为 mini,那么就会从 display:block 修改为 display:inline-block


index.wxml:

<button size="mini">我是按钮</button>
<text>我是text</text>


image.png


type


按钮的样式类型:


!> 注意点:type 仅仅是提供了一些内置样式,如果不满足我们的需求也可以通过 CSS 自定义按钮样式。


index.wxml:

<button type="primary">我是按钮</button>
<button type="default">我是按钮</button>
<button type="warn">我是按钮</button>


plain


按钮是否镂空,背景色透明:


index.wxml:

<button type="primary" plain="{{true}}">我是按钮</button>


disabled


是否禁用:


index.wxml:

<button type="primary" plain="{{true}}" disabled="{{true}}">我是按钮</button>


loading


名称前是否带 loading 图标:


index.wxml:

<button type="primary" loading="{{true}}">我是按钮</button>


看了那么多属性,其实都不是我重点要介绍的,在 button 组件中,有一个叫 open-type 的属性,这个属性官方的描述是 微信开放能力


open-type


获取用户信息


开始使用一下,在文档当中我发现可以获取用户信息,(这里是一个错误的步骤,问题就是官方没有更新文档,后面有正确的打开方式也就是获取方式)


?> open-type=getUserInfo: 获取用户信息,可以从bindgetuserinfo回调中获取到用户信息 (小程序插件中不能使用


index.wxml:

<button type="default"
        open-type="getUserInfo"
        bindgetuserinfo="onGetUserInfo"
>获取用户信息</button>


index.js:

Page({
  onGetUserInfo(event){
    console.log(event);
  }
})


点击按钮的返回值:

rawData: "{"nickName":"微信用户","gender":0,"language":"","city":"","province":"","country":"","avatarUrl":"https://thirdwx.qlogo.cn/mmopen/vi_32/POgEwh4mIHO4nibH0KlMECNjjGxQUq24ZEaGT4poC6icRiccVGKSyXwibcPq4BWmiaIGuG1icwxaQX6grC9VemZoJ8rg/132"}"

avatarUrl 的头像是错误的,好了这里我说了一堆无用的,是个错误的示例,然后我们来看看正确的方式获取,正确的获取方式其实很简单,就是写一个按钮,然后调用下微信提供的 API 即可,如下:


官方文档:https://developers.weixin.qq.com/miniprogram/dev/api/open-api/user-info/wx.getUserProfile.html


index.wxml:

<button type="default"
        bindtap="onGetUserInfo"
>获取用户信息</button>


index.js:

Page({
  onGetUserInfo(event){
    wx.getUserProfile({
      desc: 'BNTang 就是要获取',
      success: (res)=>{
        console.log(res);
      }
    })
  }
})


点击按钮的返回值:

rawData: "{"nickName":"ㅤ        ","gender":0,"language":"zh_CN","city":"","province":"","country":"","avatarUrl":"https://thirdwx.qlogo.cn/mmopen/vi_32/oKkJltWzg8IbkrI4ia5QODcRA2o9B0RnFQ6QznA5Y4HuMQOePyh6SSqEbKGzo1YGGsHNSq4Dg6v8ZxnmibGH6ZHA/132"}"

获取用户手机号


?> open-type=getPhoneNumber:获取用户手机号,可以从bindgetphonenumber回调中获取到用户信息,具体说明小程序插件中不能使用


  • 如果想获取用户的手机号,只有在前端是无法获取的,需要后端配合才能获取。


index.wxml:

<button open-type="getPhoneNumber" bindgetphonenumber="onGetPhoneNumber">获取用户手机号</button>

index.js:

Page({
  onGetPhoneNumber(event){
    console.log(event);
  }
})


返回结果:

currentTarget: {id: "", offsetLeft: 68, offsetTop: 0, dataset: {…}}
detail: {errMsg: "getPhoneNumber:ok", encryptedData: "bF9O8dTHdbGpKsdEj6tgnhHIUa4xxf8GKDhyyqc9/OUweu/yyp…brupo5Pzr9zNICoJlcm8q6iA3azjDeDhRnlSG4np/soDaxQ==", iv: "TuJRVFz2q0PoCilZZfet6Q=="}
mark: {}
mut: false
target: {id: "", offsetLeft: 68, offsetTop: 0, dataset: {…}}
timeStamp: 28140
type: "getphonenumber"
_userTap: false

!> 注意点:获取手机号的微信开发者账号必须进行认证,如果没有认证是没有权限进行获取的,认证形式我这里不提供,自行问度娘


  • 从基础库 2.21.2 开始,获取手机号的文档和方式发生了改变,所以在获取之前先确定自己使用的基础库版本


居然说到要后端配后,假如我们这里不会 golang,java,nodejs,那不是很蛋疼了,这里就不得不给大家介绍一个工具了,名为 showdoc,官方文档:https://www.showdoc.com.cn/runapi/30291


更改基础库的版本 >= 2.21.2 (这一步自行解决):


需要将 button 组件 open-type 的值设置为 getPhoneNumber,当用户点击并同意之后,可以通过 bindgetphonenumber 事件回调获取到动态令牌code,然后把code传到开发者后台,并在开发者后台调用微信后台提供的 phonenumber.getPhoneNumber 接口,消费code来换取用户手机号。每个code有效期为5分钟,且只能消费一次。


注:getPhoneNumber 返回的 code 与 wx.login 返回的 code 作用是不一样的,不能混用。


好了,看了这么多我们直接来上代码走一个:


获取 code


index.wxml:

<button open-type="getPhoneNumber" bindgetphonenumber="onGetPhoneNumber">获取用户手机号</button>

index.js:

Page({
  onGetPhoneNumber(event){
    console.log(event.detail.code);
  }
})


获取 AccessToken,官方文档:https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/mp-access-token/getAccessToken.html


我们可以使用 showdoc 来进行获取,后续就是通过后端代码进行获取即可:

2105804-20230423171354047-288526347.png


appid, secret 在微信小程序的,开发管理,开发设置当中获取。


这个时候我们已经有了 accessToken 与 code,然后再拿着这两个数值去调用获取手机号接口(也是通过showdoc进行模拟)需要注意的是code是放在请求体当中的,accessToken 是放在 Query 当中的:



目录
相关文章
|
2天前
|
小程序 JavaScript
【微信小程序】之轮播图、swiper、swiper-item、banner组件使用
【微信小程序】之轮播图、swiper、swiper-item、banner组件使用
【微信小程序】之轮播图、swiper、swiper-item、banner组件使用
|
2天前
|
存储 小程序 JavaScript
【微信小程序】-- 表单组件 - picker 实现日期选择器(五十三)
【微信小程序】-- 表单组件 - picker 实现日期选择器(五十三)
|
2天前
|
JSON 小程序 数据格式
【微信小程序】-- 自定义组件总结 (四十)
【微信小程序】-- 自定义组件总结 (四十)
|
2天前
|
小程序 JavaScript
【微信小程序】-- 自定义组件 - behaviors(三十九)
【微信小程序】-- 自定义组件 - behaviors(三十九)
|
2天前
|
小程序 JavaScript
【微信小程序】之顶部选项卡自定义tabs(不用mp-tabs扩展组件,太难用了)
【微信小程序】之顶部选项卡自定义tabs(不用mp-tabs扩展组件,太难用了)
|
2天前
|
小程序 JavaScript
【微信小程序】之自定义四宫格(不用mp-grids扩展组件实现,这个组件太难用了)
【微信小程序】之自定义四宫格(不用mp-grids扩展组件实现,这个组件太难用了)
|
2天前
|
JSON 资源调度 小程序
一个强大的小程序富文本组件mp-html
一个强大的小程序富文本组件mp-html
37 0
|
2天前
|
小程序 前端开发 API
微信小程序全栈开发中的异常处理与日志记录
【4月更文挑战第12天】本文探讨了微信小程序全栈开发中的异常处理和日志记录,强调其对确保应用稳定性和用户体验的重要性。异常处理涵盖前端(网络、页面跳转、用户输入、逻辑异常)和后端(数据库、API、业务逻辑)方面;日志记录则关注关键操作和异常情况的追踪。实践中,前端可利用try-catch处理异常,后端借助日志框架记录异常,同时采用集中式日志管理工具提升分析效率。开发者应注意安全性、性能和团队协作,以优化异常处理与日志记录流程。
|
2天前
|
小程序 安全 数据安全/隐私保护
微信小程序全栈开发中的身份认证与授权机制
【4月更文挑战第12天】本文探讨了微信小程序全栈开发中的身份认证与授权机制。身份认证包括手机号验证、微信登录和第三方登录,而授权机制涉及角色权限控制、ACL和OAuth 2.0。实践中,开发者可利用微信登录获取用户信息,集成第三方登录,以及实施角色和ACL进行权限控制。注意点包括安全性、用户体验和合规性,以保障小程序的安全运行和良好体验。通过这些方法,开发者能有效掌握小程序全栈开发技术。
|
2天前
|
小程序 前端开发 JavaScript
微信小程序全栈开发中的PWA技术应用
【4月更文挑战第12天】本文探讨了微信小程序全栈开发中PWA技术的应用,PWA结合Web的开放性和原生应用的性能,提供离线访问、后台运行、桌面图标和原生体验。开发者可利用Service Worker实现离线访问,Worker处理后台运行,Web App Manifest添加桌面图标,CSS和JavaScript提升原生体验。实践中需注意兼容性、性能优化和用户体验。PWA技术能提升小程序的性能和用户体验,助力开发者打造优质小程序。

热门文章

最新文章