微信小程序-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
在线课堂+工具组件小程序uniapp移动端源码
在线课堂+工具组件小程序uniapp移动端源码
57 0
在线课堂+工具组件小程序uniapp移动端源码
|
3月前
|
小程序 数据可视化 JavaScript
微信小程序:轻松实现时间轴组件
本文介绍了如何在微信小程序中实现一个可视化时间轴组件。该组件适用于展示用户资金流动、投资结算等时间节点,帮助用户直观了解资金去向。时间轴支持自定义节点形状、显示序号、倒序排列等功能,并通过插槽灵活定义动态内容。文中详细介绍了组件的设计与使用方法,以及如何结合动态 slot 实现自定义操作。该组件为展示用户资金信息提供了美观、易用的解决方案。
95 1
微信小程序:轻松实现时间轴组件
|
3月前
|
小程序
微信小程序动态tabBar实现:基于自定义组件,灵活支持不同用户角色与超过5个tab自由组合(更新版)
微信小程序动态tabBar实现:基于自定义组件,灵活支持不同用户角色与超过5个tab自由组合(更新版)
761 1
|
3月前
|
小程序 搜索推荐 API
微信小程序:自定义关注公众号组件样式
尽管关注公众号组件的样式固定且不可修改,但产品经理的需求却需要个性化的定制。在这种情况下,我们需要寻找解决方案,以满足这些特殊需求,尽管这可能有点棘手。
102 0
微信小程序:自定义关注公众号组件样式
|
3月前
|
小程序 前端开发 JavaScript
微信小程序图表制作利器:ECharts组件的使用与技巧
微信小程序图表制作利器:ECharts组件的使用与技巧
110 1
|
3月前
|
缓存 小程序 索引
uni-app开发微信小程序时vant组件van-tabs的使用陷阱及解决方案
uni-app开发微信小程序时vant组件van-tabs的使用陷阱及解决方案
294 1
|
3月前
|
JSON 小程序 JavaScript
uni-app开发微信小程序的报错[渲染层错误]排查及解决
uni-app开发微信小程序的报错[渲染层错误]排查及解决
847 7
|
3月前
|
小程序 JavaScript 前端开发
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
862 1
|
3月前
|
小程序 前端开发 测试技术
微信小程序的开发完整流程是什么?
微信小程序的开发完整流程是什么?
211 7
ly~
|
4月前
|
存储 供应链 小程序
除了微信小程序,PHP 还可以用于开发哪些类型的小程序?
除了微信小程序,PHP 还可用于开发多种类型的小程序,包括支付宝小程序、百度智能小程序、抖音小程序、企业内部小程序及行业特定小程序。在电商、生活服务、资讯、工具、娱乐、营销等领域,PHP 能有效管理商品信息、订单处理、支付接口、内容抓取、复杂计算、游戏数据、活动规则等多种业务。同时,在企业内部,PHP 可提升工作效率,实现审批流程、文件共享、生产计划等功能;在医疗和教育等行业,PHP 能管理患者信息、在线问诊、课程资源、成绩查询等重要数据。
ly~
99 6

热门文章

最新文章