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
TypeScript
JavaScript
import { Progress } from 'antd';
import React from 'react';
const App: React.FC = () => (
<>
<Progress percent={30} />
<Progress percent={50} status="active" />
<Progress percent={70} status="exception" />
<Progress percent={100} />
<Progress percent={50} showInfo={false} />
</>
);
export default App;
TypeScript
JavaScript
import { Progress } from 'antd';
import React from 'react';
const App: React.FC = () => (
<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>
);
export default App;
0%
TypeScript
JavaScript
import { MinusOutlined, PlusOutlined } from '@ant-design/icons';
import { Button, Progress } from 'antd';
import React, { useState } from 'react';
const App: React.FC = () => {
const [percent, setPercent] = useState(0);
const increase = () => {
let newPercent = percent + 10;
if (newPercent > 100) {
newPercent = 100;
}
setPercent(newPercent);
};
const decline = () => {
let newPercent = percent - 10;
if (newPercent < 0) {
newPercent = 0;
}
setPercent(newPercent);
};
return (
<>
<Progress type="circle" percent={percent} />
<Button.Group>
<Button onClick={decline} icon={<MinusOutlined />} />
<Button onClick={increase} icon={<PlusOutlined />} />
</Button.Group>
</>
);
};
export default App;
75 Days
Done
TypeScript
JavaScript
import { Progress } from 'antd';
import React from 'react';
const App: React.FC = () => (
<>
<Progress type="circle" percent={75} format={percent => `${percent} Days`} />
<Progress type="circle" percent={100} format={() => 'Done'} />
</>
);
export default App;
60%
60%
TypeScript
JavaScript
import { Progress, Tooltip } from 'antd';
import React from 'react';
const App: React.FC = () => (
<>
<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>
</>
);
export default App;
90%
TypeScript
JavaScript
import { Progress } from 'antd';
import React from 'react';
const App: React.FC = () => (
<>
<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}
/>
</>
);
export default App;
75%
TypeScript
JavaScript
import { Progress } from 'antd';
import React from 'react';
const App: React.FC = () => (
<>
<Progress type="circle" percent={75} />
<Progress type="circle" percent={70} status="exception" />
<Progress type="circle" percent={100} />
</>
);
export default App;
30%
TypeScript
JavaScript
import { Progress } from 'antd';
import React from 'react';
const App: React.FC = () => (
<>
<Progress type="circle" percent={30} width={80} />
<Progress type="circle" percent={70} width={80} status="exception" />
<Progress type="circle" percent={100} width={80} />
</>
);
export default App;
TypeScript
JavaScript
import { MinusOutlined, PlusOutlined } from '@ant-design/icons';
import { Button, Progress } from 'antd';
import React, { useState } from 'react';
const App: React.FC = () => {
const [percent, setPercent] = useState(0);
const increase = () => {
let newPercent = percent + 10;
if (newPercent > 100) {
newPercent = 100;
}
setPercent(newPercent);
};
const decline = () => {
let newPercent = percent - 10;
if (newPercent < 0) {
newPercent = 0;
}
setPercent(newPercent);
};
return (
<>
<Progress percent={percent} />
<Button.Group>
<Button onClick={decline} icon={<MinusOutlined />} />
<Button onClick={increase} icon={<PlusOutlined />} />
</Button.Group>
</>
);
};
export default App;
75%
75%
TypeScript
JavaScript
import { Progress } from 'antd';
import React from 'react';
const App: React.FC = () => (
<>
<Progress type="dashboard" percent={75} />
<Progress type="dashboard" percent={75} gapDegree={30} />
</>
);
export default App;
75%
75%
TypeScript
JavaScript
import { Progress } from 'antd';
import React from 'react';
const App: React.FC = () => (
<>
<Progress strokeLinecap="butt" percent={75} />
<Progress strokeLinecap="butt" type="circle" percent={75} />
<Progress strokeLinecap="butt" type="dashboard" percent={75} />
</>
);
export default App;
50%
30%
60%
TypeScript
JavaScript
import React from 'react';
import { Progress } from 'antd';
import { red, green } from '@ant-design/colors';
const App: React.FC = () => (
<>
<Progress percent={50} steps={3} />
<br />
<Progress percent={30} steps={5} />
<br />
<Progress percent={100} steps={5} size="small" strokeColor={green[6]} />
<br />
<Progress percent={60} steps={5} strokeColor={[green[6], green[6], red[5]]} />
</>
);
export default App;
API#
Properties that shared by all types.
Property | Description | Type | Default |
---|---|---|---|
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 | - |
strokeColor | The color of progress bar | string | - |
strokeLinecap | To set the style of the progress linecap | round | butt | square , see stroke-linecap | round |
success | Configs of successfully progress bar | { percent: number, strokeColor: string } | - |
trailColor | The color of unfilled part | string | - |
type | To set the type, options: line circle dashboard | string | line |
type="line"
#
Property | Description | Type | Default | Version |
---|---|---|---|---|
steps | The total step count | number | - | - |
strokeColor | The color of progress bar, render linear-gradient when passing an object, could accept string[] when has steps . | string | string[] | { from: string; to: string; direction: string } | - | 4.21.0: string[] |
strokeWidth | To set the width of the progress bar, unit: px | number | 10 | - |
type="circle"
#
Property | Description | Type | Default |
---|---|---|---|
strokeColor | The color of circular progress, render linear-gradient when passing an object | string | object | - |
strokeWidth | To set the width of the circular progress, unit: percentage of the canvas width | number | 6 |
width | To set the canvas width of the circular progress, unit: px | number | 132 |
type="dashboard"
#
Property | Description | Type | Default |
---|---|---|---|
gapDegree | The gap degree of half circle, 0 ~ 295 | number | 75 |
gapPosition | The gap position, options: top bottom left right | string | bottom |
strokeWidth | To set the width of the dashboard progress, unit: percentage of the canvas width | number | 6 |
width | To set the canvas width of the dashboard progress, unit: px | number | 132 |