@ray-js/smart-ui
Version:
轻量、可靠的智能小程序 UI 组件库
316 lines (254 loc) • 7.34 kB
Markdown
---
category: 反馈
---
简单易用的开关组件
```jsx
import { Switch } from '@ray-js/smart-ui';
```
```jsx
import { Switch } from '@ray-js/smart-ui';
import React from 'react';
export default function Demo() {
const [value, onChange] = React.useState(true);
return (
<>
<Switch
checked={value}
onChange={event => {
onChange(event.detail);
}}
/>
<Switch
checked={!value}
onChange={event => {
onChange(event.detail);
}}
/>
</>
);
}
```
```jsx
import { Switch } from '@ray-js/smart-ui';
import React from 'react';
export default function Demo() {
const [value, onChange] = React.useState(true);
return (
<>
<Switch
checked={value}
activeText="开"
inactiveText="关"
onChange={event => {
onChange(event.detail);
}}
/>
<ConfigProvider
themeVars={{
switchLabelFontSize: '10px',
}}
>
<Switch
checked={value}
activeText="展示"
inactiveText="隐藏"
onChange={event => {
onChange(event.detail);
}}
/>
</ConfigProvider>
</>
);
}
```
```jsx
import { Switch } from '@ray-js/smart-ui';
import React from 'react';
export default function Demo() {
const [value, onChange] = React.useState(true);
return (
<Switch
checked={value}
disabled
/>
);
}
```
```jsx
import { Switch } from '@ray-js/smart-ui';
import React from 'react';
export default function Demo() {
const [value, onChange] = React.useState(true);
return (
<Switch
checked={value}
loading
/>
);
}
```
`size` 属性可以设置组件的大小。
```jsx
import { Switch } from '@ray-js/smart-ui';
import React from 'react';
export default function Demo() {
const [value, onChange] = React.useState(true);
return (
<Switch
checked={value}
size="24px"
/>
);
}
```
设置 `activeColor` 可以设置选择后的颜色,`inactiveColor` 可以设置非选择后的颜色
```jsx
import { Switch } from '@ray-js/smart-ui';
import React from 'react';
export default function Demo() {
const [value, onChange] = React.useState(true);
return (
<Switch
checked={value}
activeColor="#07c160"
inactiveColor="#ee0a24"
/>
);
}
```
所有 CSS background 可以实现的属性, `activeColor` 和 `inactiveColor` 都可以实现
```jsx
import { Switch } from '@ray-js/smart-ui';
import React from 'react';
export default function Demo() {
const [value, onChange] = React.useState(true);
return (
<Switch
checked={value}
activeColor="linear-gradient(to right, #ff7e5f, #987AFF)"
inactiveColor="linear-gradient(to right, #407e5f, #841AFF)"
/>
);
}
```
```jsx
import { Switch, DialogInstance, Dialog } from '@ray-js/smart-ui';
import React from 'react';
export default function Demo() {
const [value, setValue] = React.useState(true);
const onChange = ({ detail }) => {
DialogInstance.confirm({
context: this,
title: '提示',
message: '是否切换开关?',
}).then(() => {
setValue(detail);
});
};
return (
<>
<Switch
checked={value}
onChange={onChange}
/>
<Dialog id="smart-dialog" />
</>
);
}
```
`stopClickPropagation` 属性可以阻止冒泡。
```jsx
import { Switch } from '@ray-js/smart-ui';
import React from 'react';
export default function Demo() {
const [value, onChange] = React.useState(true);
return (
<Switch
checked={value}
stopClickPropagation
onChange={event => {
onChange(event.detail);
}}
/>
);
}
```
```jsx
import { Switch, Cell, CellGroup } from '@ray-js/smart-ui';
import React from 'react';
export default function Demo() {
const [value, onChange] = React.useState(true);
return (
<CellGroup>
<Cell title="标题">
<Switch
checked={value}
onChange={event => {
onChange(event.detail);
}}
/>
</Cell>
</CellGroup>
);
}
```
| 参数 | 说明 | 类型 | 默认值 |
| ------------------------------- | ---------------------- | --------- | --------- |
| activeColor | 打开时的背景色 | _string_ | `
| activeValue | 打开时的值 | _any_ | `true` |
| checked | 开关选中状态 | _any_ | `false` |
| disabled | 是否为禁用状态 | _boolean_ | `false` |
| inactiveColor | 关闭时的背景色 | _string_ | `
| inactiveValue | 关闭时的值 | _any_ | `false` |
| loading | 是否为加载状态 | _boolean_ | `false` |
| name | 在表单内提交时的标识符 | _string_ | - |
| size | 开关尺寸 | _string_ | `30px` |
| stopClickPropagation `v1.0.2` | 是否阻止冒泡 | _boolean_ | `false` |
| activeText `v2.7.0` | 打开时的文案 | _string_ | - |
| inactiveText `v2.7.0` | 关闭时的文案 | _string_ | - |
| 事件名 | 说明 | 参数 |
| ----------- | ---------------- | -------------------------- |
| onChange | 开关状态切换回调 | event.detail: 是否选中开关 |
| 类名 | 说明 |
| ------------ | ------------ |
| customClass | 根节点样式类 |
| nodeClass | 圆点样式类 |
组件提供了下列 CSS 变量,可用于自定义样式,使用方法请参考 [ConfigProvider 组件](/material/smartui?comId=config-provider)。
| 名称 | 默认值 | 描述 |
| ----------------------------- | -------------------------------------- | ---- |
| --switch-width | _1.5338em_ | 开关宽度 |
| --switch-height | _0.867em_ | 开关高度 |
| --switch-node-size | _0.867em_ | 开关节点大小 |
| --switch-node-z-index | _1_ | 开关节点层级 |
| --switch-node-background-color | _
| --switch-node-box-shadow | _0 3px 1px 0 rgba(0, 0, 0, 0.05),_ | 开关节点阴影 |
| --switch-background-color | _var(--app-B4-N6, rgba(0, 0, 0, 0.2))_ | 开关背景颜色 |
| --switch-on-background-color | _
| --switch-transition-duration | _0.3s_ | 开关过渡持续时间 |
| --switch-disabled-opacity | _0.4_ | 开关禁用时不透明度 |
| --switch-border `@deprecated v2.5.0` | _0.08em solid rgba(0, 0, 0, 0.1)_ | 开关边框 |
| --switch-node-on-background-color `v2.4.0` | _var(--switch-node-background-color, #fff)_ | 开启时圆球的背景色 |
| --switch-padding `v2.5.0` | _0.08em_ | 内部边距 |
| --switch-label-width `v2.7.0` | _2em_ | 文本开关时的默认宽度 |
| --switch-label-font-size `v2.7.0` | _12px_ | 文字大小 |
| --switch-label-active-color `v2.7.0` | _var(--app-B3, #ffffff)_ `v2.7.0` _#FFFFFF_ `v2.8.0` | 开时文字颜色 |
| --switch-label-inactive-color `v2.7.0` | _var(--app-B3, #ffffff)_ `v2.7.0` _#FFFFFF_ `v2.8.0` | 关时文字颜色 |