Display the current progress of an operation flow.
If it will take a long time to complete an operation, you can use Progress
to show the current progress and status.
import React from 'react';
import { Progress } from 'antd';
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;
import React from 'react';
import { Progress } from 'antd';
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;
import React from 'react';
import { Progress, Space } from 'antd';
const App: React.FC = () => (
<Space wrap>
<Progress type="circle" percent={30} size={80} />
<Progress type="circle" percent={70} size={80} status="exception" />
<Progress type="circle" percent={100} size={80} />
</Space>
);
export default App;
import React, { useState } from 'react';
import { MinusOutlined, PlusOutlined } from '@ant-design/icons';
import { Button, Progress } from 'antd';
const App: React.FC = () => {
const [percent, setPercent] = useState<number>(0);
const increase = () => {
setPercent((prevPercent) => {
const newPercent = prevPercent + 10;
if (newPercent > 100) {
return 100;
}
return newPercent;
});
};
const decline = () => {
setPercent((prevPercent) => {
const newPercent = prevPercent - 10;
if (newPercent < 0) {
return 0;
}
return newPercent;
});
};
return (
<>
<Progress percent={percent} />
<Button.Group>
<Button onClick={decline} icon={<MinusOutlined />} />
<Button onClick={increase} icon={<PlusOutlined />} />
</Button.Group>
</>
);
};
export default App;
import React from 'react';
import { Progress, Space } from 'antd';
const App: React.FC = () => (
<Space wrap>
<Progress type="dashboard" percent={75} />
<Progress type="dashboard" percent={75} gapDegree={30} />
</Space>
);
export default App;
import React from 'react';
import { Progress, Space } from 'antd';
const App: React.FC = () => (
<>
<Progress strokeLinecap="butt" percent={75} />
<Space wrap>
<Progress strokeLinecap="butt" type="circle" percent={75} />
<Progress strokeLinecap="butt" type="dashboard" percent={75} />
</Space>
</>
);
export default App;
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;
import React from 'react';
import { Progress, Space } from 'antd';
const App: React.FC = () => (
<Space wrap>
<Progress type="circle" percent={75} />
<Progress type="circle" percent={70} status="exception" />
<Progress type="circle" percent={100} />
</Space>
);
export default App;
import React from 'react';
import { Progress } from 'antd';
const App: React.FC = () => (
<>
<Progress
type="circle"
trailColor="#e6f4ff"
percent={60}
strokeWidth={20}
size={14}
format={(number) => `进行中,已完成${number}%`}
/>
<span style={{ marginLeft: 8 }}>代码发布</span>
</>
);
export default App;
import React, { useState } from 'react';
import { MinusOutlined, PlusOutlined } from '@ant-design/icons';
import { Button, Progress } from 'antd';
const App: React.FC = () => {
const [percent, setPercent] = useState<number>(0);
const increase = () => {
setPercent((prevPercent) => {
const newPercent = prevPercent + 10;
if (newPercent > 100) {
return 100;
}
return newPercent;
});
};
const decline = () => {
setPercent((prevPercent) => {
const newPercent = prevPercent - 10;
if (newPercent < 0) {
return 0;
}
return newPercent;
});
};
return (
<>
<Progress type="circle" percent={percent} style={{ marginRight: 8 }} />
<Button.Group>
<Button onClick={decline} icon={<MinusOutlined />} />
<Button onClick={increase} icon={<PlusOutlined />} />
</Button.Group>
</>
);
};
export default App;
import React from 'react';
import { Progress, Space } from 'antd';
const App: React.FC = () => (
<Space wrap>
<Progress type="circle" percent={75} format={(percent) => `${percent} Days`} />
<Progress type="circle" percent={100} format={() => 'Done'} />
</Space>
);
export default App;
import React from 'react';
import { Progress, Tooltip, Space } from 'antd';
const App: React.FC = () => (
<>
<Tooltip title="3 done / 3 in progress / 4 to do">
<Progress percent={60} success={{ percent: 30 }} />
</Tooltip>
<Space wrap>
<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>
</Space>
</>
);
export default App;
import React from 'react';
import { Progress, Space } from 'antd';
const App: React.FC = () => (
<>
<Progress percent={99.9} strokeColor={{ '0%': '#108ee9', '100%': '#87d068' }} />
<Progress percent={99.9} status="active" strokeColor={{ from: '#108ee9', to: '#87d068' }} />
<Space wrap>
<Progress type="circle" percent={90} strokeColor={{ '0%': '#108ee9', '100%': '#87d068' }} />
<Progress type="circle" percent={100} strokeColor={{ '0%': '#108ee9', '100%': '#87d068' }} />
</Space>
</>
);
export default App;
import { Progress, Space } from 'antd';
import React from 'react';
const App: React.FC = () => (
<>
<Space direction="vertical">
<Progress percent={50} />
<Progress percent={50} size="small" />
<Progress percent={50} size={[300, 20]} />
</Space>
<br />
<br />
<Space size={30}>
<Progress type="circle" percent={50} />
<Progress type="circle" percent={50} size="small" />
<Progress type="circle" percent={50} size={20} />
</Space>
<br />
<br />
<Space size={30}>
<Progress type="dashboard" percent={50} />
<Progress type="dashboard" percent={50} size="small" />
<Progress type="dashboard" percent={50} size={20} />
</Space>
<br />
<br />
<Space size={30} wrap>
<Progress steps={3} percent={50} />
<Progress steps={3} percent={50} size="small" />
<Progress steps={3} percent={50} size={20} />
<Progress steps={3} percent={50} size={[20, 30]} />
</Space>
</>
);
export default App;
Properties that shared by all types.
Property | Description | Type | Default | Version |
---|---|---|---|---|
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 | |
size | Progress size | number | [number, number] | "small" | "default" | "default" | v5.3.0 |
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[] |
type="circle"
Property | Description | Type | Default | Version |
---|---|---|---|---|
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 | - |
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 |