Progress
Display the current progress of an operation flow.
When To Use#
If it will take a long time to complete an operation, you can use Progress
to show the current progress and status.
When an operation will interrupt the current interface, or it needs to run in the background for more than 2 seconds.
When you need to display the completion percentage of an operation.
Examples
import { Progress } from 'antd';
ReactDOM.render(
<>
<Progress percent={30} />
<Progress percent={50} status="active" />
<Progress percent={70} status="exception" />
<Progress percent={100} />
<Progress percent={50} showInfo={false} />
</>,
mountNode,
);
import { Progress } from 'antd';
ReactDOM.render(
<div style={{ width: 170 }}>
<Progress percent={30} size="small" />
<Progress percent={50} size="small" status="active" />
<Progress percent={70} size="small" status="exception" />
<Progress percent={100} size="small" />
</div>,
mountNode,
);
0%
import { Progress, Button } from 'antd';
import { MinusOutlined, PlusOutlined } from '@ant-design/icons';
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 (
<>
<Progress type="circle" percent={this.state.percent} />
<Button.Group>
<Button onClick={this.decline} icon={<MinusOutlined />} />
<Button onClick={this.increase} icon={<PlusOutlined />} />
</Button.Group>
</>
);
}
}
ReactDOM.render(<App />, mountNode);
75 Days
Done
import { Progress } from 'antd';
ReactDOM.render(
<>
<Progress type="circle" percent={75} format={percent => `${percent} Days`} />
<Progress type="circle" percent={100} format={() => 'Done'} />
</>,
mountNode,
);
60%
60%
import { Tooltip, Progress } from 'antd';
ReactDOM.render(
<>
<Tooltip title="3 done / 3 in progress / 4 to do">
<Progress percent={60} success={{ percent: 30 }} />
</Tooltip>
<Tooltip title="3 done / 3 in progress / 4 to do">
<Progress percent={60} success={{ percent: 30 }} type="circle" />
</Tooltip>
<Tooltip title="3 done / 3 in progress / 4 to do">
<Progress percent={60} success={{ percent: 30 }} type="dashboard" />
</Tooltip>
</>,
mountNode,
);
90%
import { Progress } from 'antd';
const Demo = () => (
<>
<Progress
strokeColor={{
'0%': '#108ee9',
'100%': '#87d068',
}}
percent={99.9}
/>
<Progress
strokeColor={{
from: '#108ee9',
to: '#87d068',
}}
percent={99.9}
status="active"
/>
<Progress
type="circle"
strokeColor={{
'0%': '#108ee9',
'100%': '#87d068',
}}
percent={90}
/>
<Progress
type="circle"
strokeColor={{
'0%': '#108ee9',
'100%': '#87d068',
}}
percent={100}
/>
</>
);
ReactDOM.render(<Demo />, mountNode);
75%
import { Progress } from 'antd';
ReactDOM.render(
<>
<Progress type="circle" percent={75} />
<Progress type="circle" percent={70} status="exception" />
<Progress type="circle" percent={100} />
</>,
mountNode,
);
30%
import { Progress } from 'antd';
ReactDOM.render(
<>
<Progress type="circle" percent={30} width={80} />
<Progress type="circle" percent={70} width={80} status="exception" />
<Progress type="circle" percent={100} width={80} />
</>,
mountNode,
);
import { Progress, Button } from 'antd';
import { MinusOutlined, PlusOutlined } from '@ant-design/icons';
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 (
<>
<Progress percent={this.state.percent} />
<Button.Group>
<Button onClick={this.decline} icon={<MinusOutlined />} />
<Button onClick={this.increase} icon={<PlusOutlined />} />
</Button.Group>
</>
);
}
}
ReactDOM.render(<App />, mountNode);
75%
75%
import { Progress } from 'antd';
ReactDOM.render(
<>
<Progress type="dashboard" percent={75} />
<Progress type="dashboard" percent={75} gapDegree={30} />
</>,
mountNode,
);
75%
75%
import { Progress } from 'antd';
ReactDOM.render(
<>
<Progress strokeLinecap="square" percent={75} />
<Progress strokeLinecap="square" type="circle" percent={75} />
<Progress strokeLinecap="square" type="dashboard" percent={75} />
</>,
mountNode,
);
50%
30%
import { Progress } from 'antd';
ReactDOM.render(
<>
<Progress percent={50} steps={3} />
<br />
<Progress percent={30} steps={5} />
<br />
<Progress percent={100} steps={5} size="small" strokeColor="#52c41a" />
</>,
mountNode,
);
API#
Properties that shared by all types.
Property | Description | Type | Default |
---|---|---|---|
type | To set the type, options: line circle dashboard | string | line |
format | The template function of the content | function(percent, successPercent) | (percent) => percent + % |
percent | To set the completion percentage | number | 0 |
showInfo | Whether to display the progress value and the status icon | boolean | true |
status | To set the status of the Progress, options: success exception normal active (line only) | string | - |
strokeLinecap | To set the style of the progress linecap | round | square | round |
strokeColor | The color of progress bar | string | - |
trailColor | The color of unfilled part | string | - |
success | Configs of successfully progress bar | { percent: number, strokeColor: string } | - |
type="line"
#
Property | Description | Type | Default |
---|---|---|---|
strokeWidth | To set the width of the progress bar, unit: px | number | 10 |
strokeColor | The color of progress bar, render linear-gradient when passing an object | string | { from: string; to: string; direction: string } | - |
steps | The total step count | number | - |
type="circle"
#
Property | Description | Type | Default |
---|---|---|---|
width | To set the canvas width of the circular progress, unit: px | number | 132 |
strokeWidth | To set the width of the circular progress, unit: percentage of the canvas width | number | 6 |
strokeColor | The color of circular progress, render linear-gradient when passing an object | string | object | - |
type="dashboard"
#
Property | Description | Type | Default |
---|---|---|---|
width | To set the canvas width of the dashboard progress, unit: px | number | 132 |
strokeWidth | To set the width of the dashboard progress, unit: percentage of the canvas width | number | 6 |
gapDegree | The gap degree of half circle, 0 ~ 295 | number | 75 |
gapPosition | The gap position, options: top bottom left right | string | bottom |