button

按钮。

属性名类型默认值说明生效时机最低版本
sizeStringdefault按钮的大小
typeStringdefault按钮的样式类型
plainBooleanfalse按钮是否镂空,背景色透明
disabledBooleanfalse是否禁用
loadingBooleanfalse名称前是否带 loading 图标
form-typeString用于 <form> 组件,点击分别会触发 <form> 组件的 submit/reset 事件
open-typeStringQQ开放能力
hover-classStringbutton-hover指定按钮按下去的样式类。当 hover-class="none" 时,没有点击态效果
hover-stop-propagationBooleanfalse指定是否阻止本节点的祖先节点出现点击态
hover-start-timeNumber20按住后多久出现点击态,单位毫秒
hover-stay-timeNumber70手指松开后点击态保留时间,单位毫秒
langStringen指定返回用户信息的语言,zh_CN 简体中文,zh_TW 繁体中文,en 英文。open-type="getUserInfo"
bindgetuserinfoHandler用户点击该按钮时,会返回获取到的用户信息,回调的detail数据与qq.getUserInfo返回的一致open-type="getUserInfo"
app-parameterString打开 APP 时,向 APP 传递的参数open-type="launchApp"
group-idString打开群资料卡时,传递的群号open-type="openGroupProfile"
binderrorHandler当使用开放能力时,发生错误的回调open-type="launchApp"
bindlaunchappHandler打开 APP 成功的回调open-type="launchApp"
bindopensettingHandler在打开授权设置页后回调open-type="openSetting"
share-typeNumber27分享类型集合open-type="share"1.4.4
aria-labelString无障碍访问,(属性)元素的额外描述
  • 注1:button-hover 默认为{background-color: rgba(0, 0, 0, 0.1); opacity: 0.7;}
  • 注2:在bindgetphonenumber 等返回加密信息的回调中调用 qq.login 登录,可能会刷新登录态。此时服务器使用 code 换取的 sessionKey 不是加密时使用的 sessionKey,导致解密失败。建议开发者提前进行 login;或者在回调中先使用 checkSession 进行登录态检查,避免 login 刷新登录态。
  • 注3:button 可作为原生组件的子节点嵌入,以便在原生组件上使用 open-type 的能力size 有效值:
说明
default默认大小
mini小尺寸

type 有效值:

说明
primary绿色
default白色
warn红色

form-type 有效值:

说明
submit提交表单
reset重置表单

open-type 有效值:

说明最低版本
share触发用户转发,使用前建议先阅读使用指引
getUserInfo获取用户信息,可以从bindgetuserinfo回调中获取到用户信息
launchApp打开APP,可以通过app-parameter属性设定向APP传的参数具体说明暂时以邀请制开放申请,请留意后续通知
openSetting打开授权设置页
feedback呼起吐个槽反馈页面,开发者可以到官网button - 图1查看反馈基础库1.2.0版本开始支持
openGroupProfile呼起群资料卡页面,可以通过group-id属性设定需要打开的群资料卡的群号,同时app.json中必须配置groupIdList(数量不超过10个),表明可以打开群资料卡的群号基础库1.4.7版本开始支持

share-type 有效值:

字段值按字节bit位分配

bit低位到高位:

  • 第1位bit0为分享到好友
  • 第2位bit1为分享到空间
  • 第3位bit2为快速分享到当前聊天窗口
  • 第4位bit3为分享到微信好友
  • 第5位bit4为分享到微信朋友圈bit2的优先级大于其他位,如果设置了bit2,则bit0bit1bit3bit4都会失效。

比如share-type设置为7(二进制表示为111),则分享到好友和分享到空间会被忽略。

bit位说明最低版本
1分享面板展示“分享到好友”1.4.4
2分享面板展示“分享到空间”1.4.4
3进行快速分享,直接分享到当前聊天窗口,onShareAppMessage需要带上entryDataHash参数1.6.3
4分享面板展示“分享到微信好友”1.6.3
5分享面板展示“分享到微信朋友圈”1.6.3

示例代码:

  1. /** qss **/
  2. /** 修改button默认的点击态样式类**/
  3. .button-hover {
  4. background-color: red;
  5. }
  6. /** 添加自定义button点击态样式类**/
  7. .other-button-hover {
  8. background-color: blue;
  9. }
  1. <button
  2. type="default"
  3. size="{{defaultSize}}"
  4. loading="{{loading}}"
  5. plain="{{plain}}"
  6. disabled="{{disabled}}"
  7. bindtap="default"
  8. hover-class="other-button-hover"
  9. >
  10. default
  11. </button>
  12. <button
  13. type="primary"
  14. size="{{primarySize}}"
  15. loading="{{loading}}"
  16. plain="{{plain}}"
  17. disabled="{{disabled}}"
  18. bindtap="primary"
  19. >
  20. primary
  21. </button>
  22. <button
  23. type="warn"
  24. size="{{warnSize}}"
  25. loading="{{loading}}"
  26. plain="{{plain}}"
  27. disabled="{{disabled}}"
  28. bindtap="warn"
  29. >
  30. warn
  31. </button>
  32. <button bindtap="setDisabled">点击设置以上按钮disabled属性</button>
  33. <button bindtap="setPlain">点击设置以上按钮plain属性</button>
  34. <button bindtap="setLoading">点击设置以上按钮loading属性</button>
  35. <button open-type="contact">进入客服会话</button>
  36. <button open-type="getUserInfo" lang="zh_CN" bindgetuserinfo="onGotUserInfo">
  37. 获取用户信息
  38. </button>
  39. <button open-type="openSetting">打开授权设置页</button>
  40. <button open-type="share" share-type="{{1}}">只能分享到好友</button>
  41. <button open-type="share" share-type="{{2}}">只能分享到空间</button>
  42. <button open-type="share" share-type="{{3}}">可以分享到好友和空间</button>
  43. <botton open-type="share" share-type="{{4}}" entry-data-hash="xxxxxx">分享</botton>
  44. <button open-type="openGroupProfile" group-id="123456">打开群资料卡</button>
  1. const types = ['default', 'primary', 'warn']
  2. const pageObject = {
  3. data: {
  4. defaultSize: 'default',
  5. primarySize: 'default',
  6. warnSize: 'default',
  7. disabled: false,
  8. plain: false,
  9. loading: false
  10. },
  11. setDisabled(e) {
  12. this.setData({
  13. disabled: !this.data.disabled
  14. })
  15. },
  16. setPlain(e) {
  17. this.setData({
  18. plain: !this.data.plain
  19. })
  20. },
  21. setLoading(e) {
  22. this.setData({
  23. loading: !this.data.loading
  24. })
  25. },
  26. onGotUserInfo(e) {
  27. console.log(e.detail.errMsg)
  28. console.log(e.detail.userInfo)
  29. console.log(e.detail.rawData)
  30. },
  31. }
  32. for (let i = 0; i < types.length; ++i) {
  33. (function (type) {
  34. pageObject[type] = function (e) {
  35. const key = type + 'Size'
  36. const changedData = {}
  37. changedData[key] =
  38. this.data[key] === 'default' ? 'mini' : 'default'
  39. this.setData(changedData)
  40. }
  41. }(types[i]))
  42. }
  43. Page(pageObject)
  1. /** app.json **/
  2. /** 必须要配置groupIdList,且group-id必须在groupIdList中才能生效**/
  3. {
  4. "pages": ["pages/index/index", "pages/logs/index"],
  5. "window": {
  6. "navigationBarTitleText": "Demo"
  7. },
  8. "tabBar": {
  9. "list": [
  10. {
  11. "pagePath": "pages/index/index",
  12. "text": "首页"
  13. },
  14. {
  15. "pagePath": "pages/logs/logs",
  16. "text": "日志"
  17. }
  18. ]
  19. },
  20. "networkTimeout": {
  21. "request": 10000,
  22. "downloadFile": 10000
  23. },
  24. "debug": true,
  25. "navigateToMiniProgramAppIdList": ["qqe5f52902cf4de896"],
  26. "groupIdList":["123456","34356576","457658769"]
  27. }

button

Bug & Tip
  • tip: 目前,设置了 form-typebutton 只会对当前组件中的 form 有效。因而,将 button 封装在自定义组件中,而 from 在自定义组件外,将会使这个 buttonform-type 失效。