Progress进度条

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

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

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

    进度条

    标准的进度条。

    Progress 进度条 - 图2

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

    1. ReactDOM.render(
    2. <div style={{ width: 170 }}>
    3. <Progress percent={30} size="small" />
    4. <Progress percent={50} size="small" status="active" />
    5. <Progress percent={70} size="small" status="exception" />
    6. <Progress percent={100} size="small" />
    7. </div>,
    8. mountNode,
    9. );

    进度圈动态展示

    1. import { Progress, Button } from 'antd';
    2. const ButtonGroup = Button.Group;
    3. class App extends React.Component {
    4. state = {
    5. percent: 0,
    6. };
    7. increase = () => {
    8. let percent = this.state.percent + 10;
    9. if (percent > 100) {
    10. percent = 100;
    11. }
    12. this.setState({ percent });
    13. };
    14. decline = () => {
    15. let percent = this.state.percent - 10;
    16. if (percent < 0) {
    17. percent = 0;
    18. }
    19. this.setState({ percent });
    20. };
    21. render() {
    22. return (
    23. <div>
    24. <Progress type="circle" percent={this.state.percent} />
    25. <ButtonGroup>
    26. <Button onClick={this.decline} icon="minus" />
    27. <Button onClick={this.increase} icon="plus" />
    28. </ButtonGroup>
    29. );
    30. }
    31. }
    32. ReactDOM.render(<App />, mountNode);

    Progress 进度条 - 图4

    format 属性指定格式。

    分段进度条

    标准的进度条。

    1. import { Tooltip, Progress } from 'antd';
    2. ReactDOM.render(
    3. <div>
    4. <Progress percent={60} successPercent={30} />
    5. </Tooltip>
    6. <Tooltip title="3 done / 3 in progress / 4 to do">
    7. <Progress percent={60} successPercent={30} type="circle" />
    8. </Tooltip>
    9. <Tooltip title="3 done / 3 in progress / 4 to do">
    10. <Progress percent={60} successPercent={30} type="dashboard" />
    11. </Tooltip>
    12. </div>,
    13. mountNode,
    14. );

    Progress 进度条 - 图6

    linear-gradient 的封装。推荐只传两种颜色。

    1. import { Progress } from 'antd';
    2. const Demo = () => (
    3. <div>
    4. <Progress
    5. strokeColor={{
    6. '0%': '#108ee9',
    7. '100%': '#87d068',
    8. }}
    9. percent={99.9}
    10. />
    11. <Progress
    12. strokeColor={{
    13. from: '#108ee9',
    14. to: '#87d068',
    15. }}
    16. percent={99.9}
    17. status="active"
    18. />
    19. </div>
    20. );
    21. ReactDOM.render(<Demo />, mountNode);

    进度圈

    Progress 进度条 - 图8

    小一号的圈形进度。

    1. import { Progress } from 'antd';
    2. ReactDOM.render(
    3. <div>
    4. <Progress type="circle" percent={30} width={80} />
    5. <Progress type="circle" percent={70} width={80} status="exception" />
    6. </div>,
    7. mountNode,
    8. );

    动态展示

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

    1. import { Progress, Button } from 'antd';
    2. const ButtonGroup = Button.Group;
    3. class App extends React.Component {
    4. state = {
    5. percent: 0,
    6. increase = () => {
    7. let percent = this.state.percent + 10;
    8. if (percent > 100) {
    9. percent = 100;
    10. }
    11. this.setState({ percent });
    12. };
    13. decline = () => {
    14. let percent = this.state.percent - 10;
    15. if (percent < 0) {
    16. percent = 0;
    17. }
    18. this.setState({ percent });
    19. };
    20. render() {
    21. return (
    22. <div>
    23. <Progress percent={this.state.percent} />
    24. <ButtonGroup>
    25. <Button onClick={this.decline} icon="minus" />
    26. <Button onClick={this.increase} icon="plus" />
    27. </ButtonGroup>
    28. </div>
    29. );
    30. }
    31. }
    32. ReactDOM.render(<App />, mountNode);

    Progress 进度条 - 图10

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

    圆角/方角边缘

    1. import { Progress } from 'antd';
    2. ReactDOM.render(
    3. <div>
    4. <Progress strokeLinecap="square" percent={75} />
    5. <Progress strokeLinecap="square" type="circle" percent={75} />
    6. <Progress strokeLinecap="square" type="dashboard" percent={75} />
    7. </div>,
    8. mountNode,
    9. );

    各类型共用的属性。