微信小程序-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 当中的:



目录
相关文章
|
1月前
|
小程序 前端开发 JavaScript
在线课堂+工具组件小程序uniapp移动端源码
在线课堂+工具组件小程序uniapp移动端源码
39 0
在线课堂+工具组件小程序uniapp移动端源码
|
2月前
|
小程序 数据可视化 JavaScript
微信小程序:轻松实现时间轴组件
本文介绍了如何在微信小程序中实现一个可视化时间轴组件。该组件适用于展示用户资金流动、投资结算等时间节点,帮助用户直观了解资金去向。时间轴支持自定义节点形状、显示序号、倒序排列等功能,并通过插槽灵活定义动态内容。文中详细介绍了组件的设计与使用方法,以及如何结合动态 slot 实现自定义操作。该组件为展示用户资金信息提供了美观、易用的解决方案。
74 1
微信小程序:轻松实现时间轴组件
|
2月前
|
小程序
微信小程序动态tabBar实现:基于自定义组件,灵活支持不同用户角色与超过5个tab自由组合(更新版)
微信小程序动态tabBar实现:基于自定义组件,灵活支持不同用户角色与超过5个tab自由组合(更新版)
670 1
|
2月前
|
小程序 搜索推荐 API
微信小程序:自定义关注公众号组件样式
尽管关注公众号组件的样式固定且不可修改,但产品经理的需求却需要个性化的定制。在这种情况下,我们需要寻找解决方案,以满足这些特殊需求,尽管这可能有点棘手。
83 0
微信小程序:自定义关注公众号组件样式
|
2月前
|
小程序 前端开发 JavaScript
微信小程序图表制作利器:ECharts组件的使用与技巧
微信小程序图表制作利器:ECharts组件的使用与技巧
86 1
|
2月前
|
缓存 小程序 索引
uni-app开发微信小程序时vant组件van-tabs的使用陷阱及解决方案
uni-app开发微信小程序时vant组件van-tabs的使用陷阱及解决方案
261 1
|
2月前
|
移动开发 小程序 数据可视化
基于npm CLI脚手架的uniapp项目创建、运行与打包全攻略(微信小程序、H5、APP全覆盖)
基于npm CLI脚手架的uniapp项目创建、运行与打包全攻略(微信小程序、H5、APP全覆盖)
373 3
|
2月前
|
小程序 API
微信小程序更新提醒uniapp
在小程序开发中,版本更新至关重要。本方案利用 `uni-app` 的 `uni.getUpdateManager()` API 在启动时检测版本更新,提示用户并提供立即更新选项,自动下载更新内容,并在更新完成后重启小程序以应用新版本。适用于微信小程序,确保用户始终使用最新版本。以下是实现步骤: ### 实现步骤 1. **创建更新方法**:在 `App.vue` 中创建 `updateApp` 方法用于检查小程序是否有新版本。 2. **测试**:添加编译模式并选择成功状态进行模拟测试。
60 0
微信小程序更新提醒uniapp
|
4月前
|
小程序 前端开发 Java
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目
JavaDog Chat v1.0.0 是一款基于 SpringBoot、MybatisPlus 和 uniapp 的简易聊天软件,兼容 H5、小程序和 APP,提供丰富的注释和简洁代码,适合初学者。主要功能包括登录注册、消息发送、好友管理及群组交流。
118 0
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目
|
4月前
|
小程序 前端开发 JavaScript
【项目实战】SpringBoot+uniapp+uview2打造一个企业黑红名单吐槽小程序
【避坑宝】是一款企业黑红名单吐槽小程序,旨在帮助打工人群体辨别企业优劣。该平台采用SpringBoot+MybatisPlus+uniapp+uview2等技术栈构建,具备丰富的注释与简洁的代码结构,非常适合实战练习与学习。通过小程序搜索“避坑宝”即可体验。
123 0
【项目实战】SpringBoot+uniapp+uview2打造一个企业黑红名单吐槽小程序