Spin 加载中

用于页面和区块的加载中状态。

何时使用

页面局部处于等待异步数据或正在渲染过程时,合适的加载动效会有效缓解用户的焦虑。

代码演示

基本用法

一个简单的 loading 状态。

Spin加载中 - 图1

  1. import React from 'react';
  2. import ReactDOM from 'react-dom';
  3. import { Spin } from 'choerodon-ui';
  4. ReactDOM.render(<Spin />, document.getElementById('container'));

各种大小

小的用于文本加载,默认用于卡片容器级加载,大的用于页面级加载。

Spin加载中 - 图2

  1. import React from 'react';
  2. import ReactDOM from 'react-dom';
  3. import { Spin } from 'choerodon-ui';
  4. ReactDOM.render(
  5. <div>
  6. <Spin size="small" />
  7. <Spin />
  8. <Spin size="large" />
  9. </div>,
  10. document.getElementById('container'));

容器

放入一个容器中。

Spin加载中 - 图3

  1. import React from 'react';
  2. import ReactDOM from 'react-dom';
  3. import { Spin } from 'choerodon-ui';
  4. ReactDOM.render(
  5. <div className="example">
  6. <Spin />
  7. </div>,
  8. document.getElementById('container'));

卡片加载中

可以直接把内容内嵌到 Spin 中,将现有容器变为加载状态。

Spin加载中 - 图4

  1. import React from 'react';
  2. import ReactDOM from 'react-dom';
  3. import { Spin, Switch, Alert } from 'choerodon-ui';
  4. class Card extends React.Component {
  5. state = { loading: false }
  6. toggle = (value) => {
  7. this.setState({ loading: value });
  8. }
  9. render() {
  10. return (
  11. <div>
  12. <Spin spinning={this.state.loading}>
  13. <Alert
  14. message="Alert message title"
  15. description="Further details about the context of this alert."
  16. type="info"
  17. />
  18. </Spin>
  19. <div style={{ marginTop: 16 }}>
  20. Loading state:<Switch checked={this.state.loading} onChange={this.toggle} />
  21. </div>
  22. </div>
  23. );
  24. }
  25. }
  26. ReactDOM.render(<Card />, document.getElementById('container'));

自定义描述文案

自定义描述文案。

Spin加载中 - 图5

  1. import React from 'react';
  2. import ReactDOM from 'react-dom';
  3. import { Spin, Alert } from 'choerodon-ui';
  4. ReactDOM.render(
  5. <Spin tip="Loading...">
  6. <Alert
  7. message="Alert message title"
  8. description="Further details about the context of this alert."
  9. type="info"
  10. />
  11. </Spin>,
  12. document.getElementById('container'));

延迟

延迟显示 loading 效果。当 spinning 状态在 delay 时间内结束,则不显示 loading 状态。

Spin加载中 - 图6

  1. import React from 'react';
  2. import ReactDOM from 'react-dom';
  3. import { Spin, Alert, Switch } from 'choerodon-ui';
  4. class Card extends React.Component {
  5. state = { loading: false }
  6. toggle = (value) => {
  7. this.setState({ loading: value });
  8. }
  9. render() {
  10. const container = (
  11. <Alert
  12. message="Alert message title"
  13. description="Further details about the context of this alert."
  14. type="info"
  15. />
  16. );
  17. return (
  18. <div>
  19. <Spin spinning={this.state.loading} delay={500}>{container}</Spin>
  20. <div style={{ marginTop: 16 }}>
  21. Loading state:<Switch checked={this.state.loading} onChange={this.toggle} />
  22. </div>
  23. </div>
  24. );
  25. }
  26. }
  27. ReactDOM.render(<Card />, document.getElementById('container'));

自定义指示符

使用自定义指示符。

Spin加载中 - 图7

  1. import React from 'react';
  2. import ReactDOM from 'react-dom';
  3. import { Spin } from 'choerodon-ui';
  4. const c7nIcon = (
  5. <span className="custom-spin-dot">
  6. <i />
  7. <i />
  8. <i />
  9. <i />
  10. </span>
  11. );
  12. ReactDOM.render((
  13. <div>
  14. <Spin indicator={c7nIcon} size="small" />
  15. <Spin indicator={c7nIcon} />
  16. <Spin indicator={c7nIcon} size="large" />
  17. </div>
  18. ), document.getElementById('container'));

API

参数说明类型默认值
delay延迟显示加载效果的时间(防止闪烁)number (毫秒)-
indicator加载指示符ReactElement-
size组件大小,可选值为 small default largestring‘default’
spinning是否旋转booleantrue
tip当作为包裹元素时,可以自定义描述文案string-
wrapperClassName包装器的类属性string-