Progress进度条
展示操作的当前进度。
何时使用
在操作需要较长时间才能完成时,为用户显示该操作的当前进度和状态。
当一个操作会打断当前界面,或者需要在后台运行,且耗时可能超过 2 秒时;
当需要显示一个操作完成的百分比时。
代码演示

标准的进度条。
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,);

会动的进度条才是好进度条。
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);

format 属性指定格式。
import { Progress } from 'antd';ReactDOM.render(<><Progress type="circle" percent={75} format={percent => `${percent} Days`} /><Progress type="circle" percent={100} format={() => 'Done'} /></>,mountNode,);

标准的进度条。type="circle|dashboard" 时不支持分段颜色。
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,);

linear-gradient 的封装。推荐只传两种颜色。
import { Progress } from 'antd';const Demo = () => (<><ProgressstrokeColor={{'0%': '#108ee9','100%': '#87d068',}}percent={99.9}/><ProgressstrokeColor={{from: '#108ee9',to: '#87d068',}}percent={99.9}status="active"/><Progresstype="circle"strokeColor={{'0%': '#108ee9','100%': '#87d068',}}percent={90}/><Progresstype="circle"strokeColor={{'0%': '#108ee9','100%': '#87d068',}}percent={100}/></>);ReactDOM.render(<Demo />, mountNode);

圈形的进度。
import { Progress } from 'antd';ReactDOM.render(<><Progress type="circle" percent={75} /><Progress type="circle" percent={70} status="exception" /><Progress type="circle" percent={100} /></>,mountNode,);

小一号的圈形进度。
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);

通过设置 type=dashboard,可以很方便地实现仪表盘样式的进度条。若想要修改缺口的角度,可以设置 gapDegree 为你想要的值。
import { Progress } from 'antd';ReactDOM.render(<><Progress type="dashboard" percent={75} /><Progress type="dashboard" percent={75} gapDegree={30} /></>,mountNode,);

通过设定 strokeLinecap="square|round" 可以调整进度条边缘的形状。
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,);

带步骤的进度条。
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
各类型共用的属性。
| 属性 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| format | 内容的模板函数 | function(percent, successPercent) | (percent) => percent + % |
| percent | 百分比 | number | 0 |
| showInfo | 是否显示进度数值或状态图标 | boolean | true |
| status | 状态,可选:success exception normal active(仅限 line) | string | - |
| strokeColor | 进度条的色彩 | string | - |
| strokeLinecap | 进度条的样式 | round | square | round |
| success | 成功进度条相关配置 | { percent: number, strokeColor: string } | - |
| trailColor | 未完成的分段的颜色 | string | - |
| type | 类型,可选 line circle dashboard | string | line |
type="line"
| 属性 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| steps | 进度条总共步数 | number | - |
| strokeColor | 进度条的色彩,传入 object 时为渐变 | string | { from: string; to: string; direction: string } | - |
| strokeWidth | 进度条线的宽度,单位 px | number | 10 |
type="circle"
| 属性 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| strokeColor | 圆形进度条线的色彩,传入 object 时为渐变 | string | object | - |
| strokeWidth | 圆形进度条线的宽度,单位是进度条画布宽度的百分比 | number | 6 |
| width | 圆形进度条画布宽度,单位 px | number | 132 |
type="dashboard"
| 属性 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| gapDegree | 仪表盘进度条缺口角度,可取值 0 ~ 295 | number | 75 |
| gapPosition | 仪表盘进度条缺口位置 | top | bottom | left | right | bottom |
| strokeWidth | 仪表盘进度条线的宽度,单位是进度条画布宽度的百分比 | number | 6 |
| width | 仪表盘进度条画布宽度,单位 px | number | 132 |