button

按钮。

属性名 类型 默认值 说明 生效时机 最低版本
size String default 按钮的大小
type String default 按钮的样式类型
plain Boolean false 按钮是否镂空,背景色透明
disabled Boolean false 是否禁用
loading Boolean false 名称前是否带 loading 图标
form-type String 用于 <form> 组件,点击分别会触发 <form> 组件的 submit/reset 事件
open-type String QQ开放能力
hover-class String button-hover 指定按钮按下去的样式类。当 hover-class="none" 时,没有点击态效果
hover-stop-propagation Boolean false 指定是否阻止本节点的祖先节点出现点击态
hover-start-time Number 20 按住后多久出现点击态,单位毫秒
hover-stay-time Number 70 手指松开后点击态保留时间,单位毫秒
lang String en 指定返回用户信息的语言,zh_CN 简体中文,zh_TW 繁体中文,en 英文。 open-type="getUserInfo"
bindgetuserinfo Handler 用户点击该按钮时,会返回获取到的用户信息,回调的detail数据与qq.getUserInfo返回的一致 open-type="getUserInfo"
app-parameter String 打开 APP 时,向 APP 传递的参数 open-type="launchApp"
group-id String 打开群资料卡时,传递的群号 open-type="openGroupProfile"
binderror Handler 当使用开放能力时,发生错误的回调 open-type="launchApp"
bindlaunchapp Handler 打开 APP 成功的回调 open-type="launchApp"
bindopensetting Handler 在打开授权设置页后回调 open-type="openSetting"
share-mode Array<String> ['qq', 'qzone'] 分享类型集合,请参考下面share-mode有效值说明 open-type="share" 1.10.1
aria-label String 无障碍访问,(属性)元素的额外描述
open-id String 添加好友时,对方的openid open-type="addFriend"
bindaddfriend Handler 添加好友的回调 open-type="addFriend"
  • 注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 呼起吐个槽反馈页面,开发者可以到官网查看反馈 基础库1.2.0版本开始支持
openGroupProfile 呼起群资料卡页面,可以通过group-id属性设定需要打开的群资料卡的群号,同时app.json中必须配置groupIdList(数量不超过10个),表明可以打开群资料卡的群号 基础库1.4.7版本开始支持
contact 打开客服会话
addFriend 添加好友, 对方需要通过该小程序进行授权,允许被加好友后才能调用成功用户授权
addColorSign 添加彩签,点击后添加状态有用户提示,无回调 基础库1.10.0版本开始支持

share-mode 数组元素的有效值:

元素值 说明 最低版本
'qq' 分享面板展示“分享到好友” 1.10.1
'qzone' 分享面板展示“分享到空间” 1.10.1
'quickToDialog' 进行快速分享,直接分享到当前聊天窗口,page.onShareAppMessage需要带上entryDataHash参数 1.10.1
'wechatFriends' 分享面板展示“分享到微信好友” 1.10.1
'wechatMoment' 分享面板展示“分享到微信朋友圈” 1.10.1
'recentContacts' 分享到最近的联系人列表 1.10.1

元素值的优先级:

"quickToDialog" > "recentContacts" > ("qq" = "qzone" = "wechatFriends" = "wechatMoment")

比如share-mode设置为['qq', 'qzone', 'quickToDialog'],则为快速分享到当前聊天窗口,分享到好友和分享到空间会被忽略。

示例代码:

/** qss **/
/** 修改button默认的点击态样式类**/
.button-hover {
  background-color: red;
}
/** 添加自定义button点击态样式类**/
.other-button-hover {
  background-color: blue;
}
1
2
3
4
5
6
7
8
9
<button
  type="default"
  size="{{defaultSize}}"
  loading="{{loading}}"
  plain="{{plain}}"
  disabled="{{disabled}}"
  bindtap="default"
  hover-class="other-button-hover"
>
  default
</button>
<button
  type="primary"
  size="{{primarySize}}"
  loading="{{loading}}"
  plain="{{plain}}"
  disabled="{{disabled}}"
  bindtap="primary"
>
  primary
</button>
<button
  type="warn"
  size="{{warnSize}}"
  loading="{{loading}}"
  plain="{{plain}}"
  disabled="{{disabled}}"
  bindtap="warn"
>
  warn
</button>
<button bindtap="setDisabled">点击设置以上按钮disabled属性</button>
<button bindtap="setPlain">点击设置以上按钮plain属性</button>
<button bindtap="setLoading">点击设置以上按钮loading属性</button>
<button open-type="contact">进入客服会话</button>
<button open-type="getUserInfo" lang="zh_CN" bindgetuserinfo="onGotUserInfo">
  获取用户信息
</button>
<button open-type="openSetting">打开授权设置页</button>
<button open-type="share" share-mode="{{['qq']}}">只能分享到好友</button>
<button open-type="share" share-mode="{{['qzone']}}">只能分享到空间</button>
<button open-type="share" share-mode="{{['qq', 'qzone']}}">可以分享到好友和空间</button>
<button open-type="openGroupProfile" group-id="123456">打开群资料卡</button>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
const types = ['default', 'primary', 'warn']
const pageObject = {
  data: {
    defaultSize: 'default',
    primarySize: 'default',
    warnSize: 'default',
    disabled: false,
    plain: false,
    loading: false
  },
  setDisabled(e) {
    this.setData({
      disabled: !this.data.disabled
    })
  },
  setPlain(e) {
    this.setData({
      plain: !this.data.plain
    })
  },
  setLoading(e) {
    this.setData({
      loading: !this.data.loading
    })
  },
  onGotUserInfo(e) {
    console.log(e.detail.errMsg)
    console.log(e.detail.userInfo)
    console.log(e.detail.rawData)
  },
}

for (let i = 0; i < types.length; ++i) {
  (function (type) {
    pageObject[type] = function (e) {
      const key = type + 'Size'
      const changedData = {}
      changedData[key] =
        this.data[key] === 'default' ? 'mini' : 'default'
      this.setData(changedData)
    }
  }(types[i]))
}

Page(pageObject)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
/** app.json **/
/** 必须要配置groupIdList,且group-id必须在groupIdList中才能生效**/
{
  "pages": ["pages/index/index", "pages/logs/index"],
  "window": {
    "navigationBarTitleText": "Demo"
  },
  "tabBar": {
    "list": [
      {
        "pagePath": "pages/index/index",
        "text": "首页"
      },
      {
        "pagePath": "pages/logs/logs",
        "text": "日志"
      }
    ]
  },
  "networkTimeout": {
    "request": 10000,
    "downloadFile": 10000
  },
  "debug": true,
  "navigateToMiniProgramAppIdList": ["qqe5f52902cf4de896"],
  "groupIdList":["123456","34356576","457658769"]
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

button

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