button

1.0.0 新版功能: 低版本需做 兼容处理

按钮。

属性

类型

默认值

必填

说明

最低版本

size

string

default

按钮的大小

1.0.0

type

string

default

按钮的样式类型

1.0.0

plain

boolean

false

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

1.0.0

disabled

boolean

false

是否禁用

1.0.0

loading

boolean

false

名称前是否带 loading 图标

1.0.0

form-type

string

用于 <form> 组件,点击分别会触发 <form> 组件的 submit/reset 事件

1.0.0

open-type

string

微信开放能力

1.1.0

hover-class

string

button-hover

指定按钮按下去的样式类。当 hover-class=”none” 时,没有点击态效果

1.0.0

hover-stop-propagation

boolean

false

指定是否阻止本节点的祖先节点出现点击态

1.5.0

hover-start-time

number

20

按住后多久出现点击态,单位毫秒

1.0.0

hover-stay-time

number

70

手指松开后点击态保留时间,单位毫秒

1.0.0

lang

string

en

指定返回用户信息的语言,zh_CN 简体中文,zh_TW 繁体中文,en 英文。

1.3.0

session-from

string

会话来源,open-type=”contact”时有效

1.4.0

send-message-title

string

当前标题

会话内消息卡片标题,open-type=”contact”时有效

1.5.0

send-message-path

string

当前分享路径

会话内消息卡片点击跳转小程序路径,open-type=”contact”时有效

1.5.0

send-message-img

string

截图

会话内消息卡片图片,open-type=”contact”时有效

1.5.0

app-parameter

string

打开 APP 时,向 APP 传递的参数,open-type=launchApp时有效

1.9.5

show-message-card

boolean

false

是否显示会话内消息卡片,设置此参数为 true,用户进入客服会话会在右下角显示”可能要发送的小程序”提示,用户点击后可以快速发送小程序消息,open-type=”contact”时有效

1.5.0

bindgetuserinfo

eventhandle

用户点击该按钮时,会返回获取到的用户信息,回调的detail数据与wx.getUserInfo返回的一致,open-type=”getUserInfo”时有效

1.3.0

bindcontact

eventhandle

客服消息回调,open-type=”contact”时有效

1.5.0

bindgetphonenumber

eventhandle

获取用户手机号回调,open-type=getPhoneNumber时有效

1.2.0

binderror

eventhandle

当使用开放能力时,发生错误的回调,open-type=launchApp时有效

1.9.5

bindopensetting

eventhandle

在打开授权设置页后回调,open-type=openSetting时有效

2.0.7

bindlaunchapp

eventhandle

打开 APP 成功的回调,open-type=launchApp时有效

2.4.4

size 的合法值

说明

default

默认大小

mini

小尺寸

type 的合法值

说明

primary

绿色

default

白色

warn

红色

form-type 的合法值

说明

submit

提交表单

reset

重置表单

open-type 的合法值

说明

最低版本

contact

打开客服会话,如果用户在会话中点击消息卡片后返回小程序, 可以从 bindcontact 回调中获得具体信息,具体说明

1.1.0

share

触发用户转发,使用前建议先阅读使用指引

1.2.0

getPhoneNumber

获取用户手机号,可以从bindgetphonenumber 回调中获取到用户信息,具体说明

1.2.0

getUserInfo

获取用户信息,可以从bindgetuserinfo 回调中获取到用户信息

1.3.0

launchApp

打开APP,可以通过app-parameter 属性设定向APP传的参数具体说明

1.9.5

openSetting

打开授权设置页

2.0.7

feedback

打开“意见反馈”页面,用户可提交反馈内容并上传日志, 开发者可以登录小程序管理后台后进入 左侧菜单“客服反馈”页面获取到反馈内容

2.1.0

lang 的合法值

说明

en

英文

zh_CN

简体中文

zh_TW

繁体中文

小技巧

button-hover 默认为{background-color: rgba(0, 0, 0, 0.1); opacity: 0.7;}

小技巧

bindgetphonenumber 从1.2.0 但是在1.5.3以下版本中无法使用wx.canIUse进行检测,建议使用基础库版本进行判断。

小技巧

在bindgetphonenumber 等返回加密信息的回调中调用 wx.login 登录,可能会刷新登录态。此时服务器使用 code 换取的 sessionKey 不是加密时使用的 sessionKey,导致解密失败。建议开发者提前进行 login;或者在回调中先使用 checkSession 进行登录态检查,避免 login 刷新登录态。

小技巧

从 2.1.0 起,button 可作为原生组件的子节点嵌入,以便在原生组件上使用 open-type 的能力。

小技巧

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

示例代码

在开发者工具中预览效果

.button-hover {
  background-color: red;
}
.other-button-hover {
  background-color: blue;
}
<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>
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)