@ray-js/smart-ui
Version:
轻量、可靠的智能小程序 UI 组件库
335 lines (280 loc) • 12.9 kB
Markdown
---
category: 通用
assets: CircleHandle,PressKey,TyFinger,DoubleKey
---
# Button 按钮
### 介绍
按钮用于触发一个操作,如提交表单。
### 引入
```jsx
import { Button } from '@ray-js/smart-ui';
```
## 代码演示
### 按钮类型
支持`default`、`primary`、`info`、`warning`、`danger`五种类型,默认为`default`。
```jsx
import React from 'react';
import { Button } from '@ray-js/smart-ui';
import { View } from '@ray-js/ray';
export default function Demo() {
return (
<View>
<Button type="default">默认按钮</Button>
<Button type="primary">主要按钮</Button>
<Button type="info">信息按钮</Button>
<Button type="warning">警告按钮</Button>
<Button type="danger">危险按钮</Button>
</View>
);
}
```
### 朴素按钮
通过`plain`属性将按钮设置为朴素按钮,朴素按钮的文字为按钮颜色;默认背景为白色,字体为黑色。
```jsx
import React from 'react';
import { Button } from '@ray-js/smart-ui';
import { View } from '@ray-js/ray';
export default function Demo() {
return (
<View>
<Button plain>朴素按钮</Button>
<Button plain type="primary">
朴素按钮
</Button>
<Button plain type="info">
朴素按钮
</Button>
</View>
);
}
```
### 细边框
设置`hairline`属性可以开启 0.5px 边框,基于伪类实现。
```jsx
import React from 'react';
import { Button } from '@ray-js/smart-ui';
import { View } from '@ray-js/ray';
export default function Demo() {
return (
<View>
<Button plain hairline type="primary">
细边框按钮
</Button>
<Button plain hairline type="info">
细边框按钮
</Button>
</View>
);
}
```
### 禁用状态
通过`disabled`属性来禁用按钮,此时按钮的`bind:click`事件不会触发。
```jsx
import React from 'react';
import { Button } from '@ray-js/smart-ui';
import { View } from '@ray-js/ray';
export default function Demo() {
return (
<View>
<Button disabled type="primary">
禁用状态
</Button>
<Button disabled type="info">
禁用状态
</Button>
</View>
);
}
```
### 加载状态
```jsx
import React from 'react';
import { Button } from '@ray-js/smart-ui';
import { View } from '@ray-js/ray';
export default function Demo() {
return (
<View>
<Button loading type="warning" loadingText="加载中..." />
<Button loading type="warning" />
<Button loading type="primary" />
<Button loading type="primary" loadingType="spinner" />
</View>
);
}
```
### 按钮形状
```jsx
import React from 'react';
import { Button } from '@ray-js/smart-ui';
import { View } from '@ray-js/ray';
export default function Demo() {
return (
<View>
<Button square type="primary">
方形按钮
</Button>
<Button round type="info">
圆形按钮
</Button>
</View>
);
}
```
### 图标按钮
通过`icon`属性设置按钮图标,支持 Icon 组件里的所有图标,也可以传入图标 URL。
```jsx
import React from 'react';
import { Button } from '@ray-js/smart-ui';
import { View } from '@ray-js/ray';
import PlusCircleIcon from '@tuya-miniapp/icons/dist/svg/PlusCircle';
import RightIcon from '@tuya-miniapp/icons/dist/svg/Right';
export default function Demo() {
return (
<View>
<Button icon={PlusCircleIcon} type="primary" />
<Button icon={RightIcon} type="primary">
按钮
</Button>
<Button
icon="https://static1.tuyacn.com/static/tuya-miniapp-doc/_next/static/images/logo-small.png"
type="info"
>
按钮
</Button>
</View>
);
}
```
### 按钮尺寸
支持`large`、`normal`、`small`、`mini`四种尺寸,默认为`normal`。
```jsx
import React from 'react';
import { Button } from '@ray-js/smart-ui';
import { View } from '@ray-js/ray';
export default function Demo() {
return (
<View>
<Button type="primary" size="large">
大号按钮
</Button>
<Button type="primary" size="normal">
普通按钮
</Button>
<Button type="primary" size="small">
小型按钮
</Button>
<Button type="primary" size="mini">
迷你按钮
</Button>
</View>
);
}
```
### 块级元素
通过`block`属性可以将按钮的元素类型设置为块级元素。
```jsx
import React from 'react';
import { Button } from '@ray-js/smart-ui';
import { View } from '@ray-js/ray';
export default function Demo() {
return (
<View>
<Button type="primary" block>
块级元素
</Button>
</View>
);
}
```
### 自定义颜色
通过`color`属性可以自定义按钮的颜色。
```jsx
import React from 'react';
import { Button } from '@ray-js/smart-ui';
import { View } from '@ray-js/ray';
export default function Demo() {
return (
<View>
<Button color="#7232dd">单色按钮</Button>
<Button color="#7232dd" plain>
单色按钮
</Button>
<Button color="linear-gradient(to right, #4bb0ff, #6149f6)">渐变色按钮</Button>{' '}
</View>
);
}
```
## API
### Props
| 参数 | 说明 | 类型 | 默认值 |
| ------------ | -------------------------------------------------------- | --------- | ------------ |
| block | 是否为块级元素 | _boolean_ | `false` |
| buttonId | 标识符,作为原生 button 组件的 id 值 | _string_ | - |
| classPrefix | 图标类名前缀,同 Icon 组件的 [class-prefix 属性](/material/smartui?comId=icon) | _string_ | `smart-icon` |
| color | 按钮颜色,支持传入`linear-gradient`渐变色 | _string_ | - |
| customStyle | 自定义样式 | _React.CSSProperties_ | - |
| disabled | 是否禁用按钮 | _boolean_ | `false` |
| hairline | 是否使用 0.5px 边框 | _boolean_ | `false` |
| icon | 左侧图标或图片链接,可选值见 [Icon 组件](/material/smartui?comId=icon) | _string_ | - |
| id | 标识符 | _string_ | - |
| loading | 是否显示为加载状态 | _boolean_ | `false` |
| loadingSize | 加载图标大小 | _string_ | `20px` |
| loadingText | 加载状态提示文字 | _string_ | - |
| textStyle | 按钮文字样式 | _React.CSSProperties_ | - |
| loadingType | 加载状态图标类型,可选值为 `spinner` | _string_ | `circular` |
| plain | 是否为朴素按钮 | _boolean_ | `false` |
| rightIcon | 右侧图标或图片链接,可选值见 [Icon 组件](/material/smartui?comId=icon) | _string_ | - |
| round | 是否为圆形按钮 | _boolean_ | `false` |
| size | 按钮尺寸,可选值为 `normal` `large` `small` `mini` | _string_ | `normal` |
| square | 是否为方形按钮 | _boolean_ | `false` |
| type | 按钮类型,可选值为 `primary` `info` `warning` `danger` | _string_ | `default` |
### Events
| 事件名 | 说明 | 参数 |
| ---------- | ---------------------------------------- | ---- |
| onClick | 点击按钮,且按钮状态不为加载或禁用时触发 | - |
| onError | 当使用开放能力时,发生错误的回调 | - |
> Button 提供的是 click 事件而不是原生 tap 事件,按钮禁用时,click 事件不会触发,tap 事件依然会触发。
### 外部样式类
| 类名 | 说明 |
| ------------- | -------------- |
| customClass | 根节点样式类 |
| loadingClass | 加载图标样式类 |
| hoverClass | 按钮按下时的样式 |
### 样式变量
组件提供了下列 CSS 变量,可用于自定义样式,使用方法请参考 [ConfigProvider 组件](/material/smartui?comId=config-provider)。
| 名称 | 默认值 | 描述 |
| --------------------------------------------- | ---------------------------------------------- | ---------------------------------- |
| --button-mini-height | _22px_ | 迷你按钮高度 |
| --button-mini-min-width | _50px_ | 迷你按钮最小宽度 |
| --button-mini-font-size | _10px_ | 迷你按钮字体大小 |
| --button-small-height | _30px_ | 小按钮高度 |
| --button-small-font-size | _12px_ | 小按钮字体大小 |
| --button-small-min-width | _60px_ | 小按钮最小宽度 |
| --button-normal-font-size | _14px_ | 普通按钮字体大小 |
| --button-large-height | _48px_ | 大按钮高度 |
| --button-default-color | _var(--app-B1-N1, rgba(0, 0, 0, 1))_ | 默认按钮字体颜色 |
| --button-default-height | _48px_ | 默认按钮高度 |
| --button-default-font-size | _16px_ | 默认按钮字体大小 |
| --button-default-background-color | _var(--app-B3, #ffffff)_ | 默认按钮背景颜色 |
| --button-default-border-color | _var(--app-B6-N7, rgba(0, 0, 0, 0.1))_ | 默认按钮边框颜色 |
| --button-primary-color | _#fff_ | 主按钮字体颜色 |
| --button-primary-background-color | _var(--app-M3, #2dda86)_ | 主按钮背景颜色 |
| --button-primary-border-color | _var(--app-M3, #2dda86)_ | 主按钮边框颜色 |
| --button-info-color | _#fff_ | 信息按钮字体颜色 |
| --button-info-background-color | _var(--app-M4, #1989fa)_ | 信息按钮背景颜色 |
| --button-info-border-color | _var(--app-M4, #1989fa)_ | 信息按钮边框颜色 |
| --button-danger-color | _#fff_ | 危险按钮字体颜色 |
| --button-danger-background-color | _var(--app-M2, #f04c4c)_ | 危险按钮背景颜色 |
| --button-danger-border-color | _var(--app-M2, #f04c4c)_ | 危险按钮边框颜色 |
| --button-warning-color | _#fff_ | 警告按钮字体颜色 |
| --button-warning-background-color | _var(--app-M5, #ffa000)_ | 警告按钮背景颜色 |
| --button-warning-border-color | _var(--app-M5, #ffa000)_ | 警告按钮边框颜色 |
| --button-line-height | _20px_ | 按钮行高 |
| --button-border-width | _1px_ | 按钮边框宽度 |
| --button-border-radius | _10px_ | 按钮边框圆角半径 |
| --button-round-border-radius | _999px_ | 圆形按钮边框圆角半径 |
| --button-plain-color `v2.13.2` | _rgba(0, 0, 0, 0.9)_ | 纯按钮文字颜色 |
| --button-plain-background-color | _#fff_ | 纯按钮背景颜色 |
| --button-disabled-opacity | _0.3_ | 禁用按钮不透明度 |
| --button-font-weight | _normal_ | 按钮字体粗细 |
| --button-primary-font-weight | _600_ | 主按钮字体粗细 |