Progress进度条

展示操作的当前进度。

何时使用#

在操作需要较长时间才能完成时,为用户显示该操作的当前进度和状态。

  • 当一个操作会打断当前界面,或者需要在后台运行,且耗时可能超过2秒时;

  • 当需要显示一个操作完成的百分比时。

代码演示

30%
50%

标准的进度条。

expand codeexpand code
import { Progress } from 'antd';

ReactDOM.render(
  <div>
    <Progress percent={30} />
    <Progress percent={50} status="active" />
    <Progress percent={70} status="exception" />
    <Progress percent={100} />
    <Progress percent={50} showInfo={false} />
  </div>
, mountNode);
30%
50%

适合放在较狭窄的区域内。

expand codeexpand code
import { Progress } from 'antd';

ReactDOM.render(
  <div style={{ width: 170 }}>
    <Progress percent={30} strokeWidth={5} />
    <Progress percent={50} strokeWidth={5} status="active" />
    <Progress percent={70} strokeWidth={5} status="exception" />
    <Progress percent={100} strokeWidth={5} />
  </div>
, mountNode);
0%

会动的进度条才是好进度条。

expand codeexpand code
import { Progress, Button } from 'antd';
const ButtonGroup = Button.Group;

class App extends React.Component {
  state = {
    percent: 0,
  }
  increase = () => {
    let percent = this.state.percent + 10;
    if (percent > 100) {
      percent = 100;
    }
    this.setState({ percent });
  }
  decline = () => {
    let percent = this.state.percent - 10;
    if (percent < 0) {
      percent = 0;
    }
    this.setState({ percent });
  }
  render() {
    return (
      <div>
        <Progress type="circle" percent={this.state.percent} />
        <ButtonGroup>
          <Button onClick={this.decline} icon="minus" />
          <Button onClick={this.increase} icon="plus" />
        </ButtonGroup>
      </div>
    );
  }
}

ReactDOM.render(<App />, mountNode);
75 Days
Done

format 属性指定格式。

expand codeexpand code
import { Progress } from 'antd';

ReactDOM.render(
  <div>
    <Progress type="circle" percent={75} format={percent => `${percent} Days`} />
    <Progress type="circle" percent={100} format={() => 'Done'} />
  </div>
, mountNode);
75%

圈形的进度。

expand codeexpand code
import { Progress } from 'antd';

ReactDOM.render(
  <div>
    <Progress type="circle" percent={75} />
    <Progress type="circle" percent={70} status="exception" />
    <Progress type="circle" percent={100} />
  </div>
, mountNode);
30%

小一号的圈形进度。

expand codeexpand code
import { Progress } from 'antd';

ReactDOM.render(
  <div>
    <Progress type="circle" percent={30} width={80} />
    <Progress type="circle" percent={70} width={80} status="exception" />
    <Progress type="circle" percent={100} width={80} />
  </div>
, mountNode);
0%

会动的进度条才是好进度条。

expand codeexpand code
import { Progress, Button } from 'antd';
const ButtonGroup = Button.Group;

class App extends React.Component {
  state = {
    percent: 0,
  }
  increase = () => {
    let percent = this.state.percent + 10;
    if (percent > 100) {
      percent = 100;
    }
    this.setState({ percent });
  }
  decline = () => {
    let percent = this.state.percent - 10;
    if (percent < 0) {
      percent = 0;
    }
    this.setState({ percent });
  }
  render() {
    return (
      <div>
        <Progress percent={this.state.percent} />
        <ButtonGroup>
          <Button onClick={this.decline} icon="minus" />
          <Button onClick={this.increase} icon="plus" />
        </ButtonGroup>
      </div>
    );
  }
}

ReactDOM.render(<App />, mountNode);
75%

通过设置 type=dashboard,可以很方便地实现仪表盘样式的进度条。

expand codeexpand code
import { Progress } from 'antd';

ReactDOM.render(<Progress type="dashboard" percent={75} />, mountNode);

API#

属性说明类型默认值
type类型,可选 line circle dashboardstringline
percent百分比number0
format内容的模板函数function(percent)percent => percent + '%'
status状态,可选:success exception activestring-
showInfo是否显示进度数值或状态图标booleantrue
strokeWidth (type=line)进度条线的宽度,单位 pxnumber10
strokeWidth (type=circle)圆形进度条线的宽度,单位是进度条画布宽度的百分比number6
width (type=circle)圆形进度条画布宽度,单位 pxnumber132
gapDegree (type=circle)圆形进度条缺口角度,可取值 0 ~ 360number0
gapPosition (type=circle)圆形进度条缺口位置Enum{ 'top', 'bottom', 'left', 'right' }top