Switch 开关组件

如果项目中使用的是 1.x 版本的基础组件(@alifd/next),请在左侧导航顶部切换组件版本。

安装方法

  1. 在命令行中执行以下命令npm install @icedesign/base@latest -S

开发指南

开关组件

何时使用

开/关切换器切换单个设置选项的状态。开关控制器中的选项,以及它所在的状态,应该用伴随的内联标签显示清楚。开关选择器具有和单选按钮一样的视觉属性。使用文本“开”和“关”滑动切换已经过时了。使用这里显示的开关选择器代替。

使用注意

  • 对于checkChildren和unCheckedChildren的自定义要考虑文字大小,因为switch的宽度有限,默认一个汉字大小。如果设置成多个字或者英文要注意宽度控制。

  • size 等于small时不支持文案和Icon设置

API

开关组件

参数说明类型默认值
prefix样式类名的品牌前缀String'next-'
className自定义类名String-
style自定义内敛样式Object-
checkedChildren打开时的内容any-
unCheckedChildren关闭时的内容any-
onChange开关状态改变是触发此事件签名:Function(checked: Boolean, e: Event) => void参数:checked: {Boolean} 是否为打开状态e: {Event} DOM事件对象Function() => { }
checked开关当前的值(针对受控组件)Boolean-
defaultChecked开关默认值 (针对非受控组件)Boolean-
disabled表示开关被禁用Booleanfalse
sizeswitch的尺寸可选值:'medium'(正常大小)'small'(缩小版大小)Enum'medium'
onClick鼠标点击事件签名:Function(e: Event) => void参数:e: {Event} DOM事件对象Function-
onKeyDown键盘按键事件签名:Function(e: Event) => void参数:e: {Event} DOM事件对象Function-

代码示例

简单

最简单的用法,size可设置大小。

Switch 开关组件 - 图1

查看源码在线预览

  1. import { Switch } from "@icedesign/base";
  2. function onChange(checked) {
  3. console.log("switch to " + checked);
  4. }
  5. ReactDOM.render(
  6. <div>
  7. <Switch checkedChildren="开" onChange={onChange} unCheckedChildren="关" />
  8. <br />
  9. <Switch defaultChecked={false} onChange={onChange} size="small" />
  10. </div>,
  11. mountNode
  12. );

受控开关

对于受控开关, 每一次 React 数据渲染时, 都会使用传入的值来更新开关, 开关本身是不能更新自己的状态的.受控开关, 是指组件的值由上层组件决定, 如果开关定义了 value 属性, 就表示此开关是受控开关.

Switch 开关组件 - 图2

查看源码在线预览

  1. import { Switch } from "@icedesign/base";
  2. class App extends React.Component {
  3. constructor(props) {
  4. super(props);
  5. this.state = {
  6. checked: false
  7. };
  8. this.onChange = this.onChange.bind(this);
  9. }
  10. render() {
  11. return (
  12. <div>
  13. <div className="line">
  14. 开关的值: {this.state.checked ? "true" : "false"}
  15. </div>
  16. <div className="line">
  17. <Switch checked={this.state.checked} onChange={this.onChange} />
  18. <Switch
  19. checked={this.state.checked}
  20. onChange={this.onChange}
  21. disabled
  22. />
  23. </div>
  24. </div>
  25. );
  26. }
  27. onChange(checked) {
  28. this.setState({ checked });
  29. }
  30. }
  31. ReactDOM.render(<App />, mountNode);
  1. .line {
  2. margin-bottom: 10px;
  3. }
  4. .next-switch {
  5. margin-right: 20px;
  6. }

不可用

Switch 失效状态。

Switch 开关组件 - 图3

查看源码在线预览

  1. import { Button, Icon, Switch } from "@icedesign/base";
  2. class Test extends React.Component {
  3. constructor(props) {
  4. super(props);
  5. this.state = {
  6. disabled: true
  7. };
  8. }
  9. toggle() {
  10. this.setState(
  11. Object.assign({}, this.state, {
  12. disabled: !this.state.disabled
  13. })
  14. );
  15. }
  16. render() {
  17. return (
  18. <div>
  19. <Switch
  20. checkedChildren={<Icon type="select" size="small" />}
  21. unCheckedChildren={<Icon type="close" size="small" />}
  22. disabled={this.state.disabled}
  23. />
  24. <Switch
  25. checkedChildren="开"
  26. unCheckedChildren="关"
  27. disabled={this.state.disabled}
  28. />
  29. <br />
  30. <br />
  31. <Button type="primary" onClick={this.toggle.bind(this)}>
  32. Toggle disabled
  33. </Button>
  34. </div>
  35. );
  36. }
  37. }
  38. ReactDOM.render(<Test />, mountNode);

相关区块

Switch 开关组件 - 图4

暂无相关区块