|
|
|
@ -27,7 +27,8 @@ class WaterWave extends PureComponent { |
|
|
|
componentDidUpdate(props) { |
|
|
|
const { percent } = this.props; |
|
|
|
if (props.percent !== percent) { |
|
|
|
this.renderChart(); |
|
|
|
// 不加这个会造成绘制缓慢
|
|
|
|
this.renderChart('update'); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@ -49,10 +50,11 @@ class WaterWave extends PureComponent { |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
renderChart() { |
|
|
|
renderChart(type) { |
|
|
|
const { percent, color = '#1890FF' } = this.props; |
|
|
|
const data = percent / 100; |
|
|
|
const self = this; |
|
|
|
cancelAnimationFrame(this.timer); |
|
|
|
|
|
|
|
if (!this.node || (data !== 0 && !data)) { |
|
|
|
return; |
|
|
|
@ -60,7 +62,6 @@ class WaterWave extends PureComponent { |
|
|
|
|
|
|
|
const canvas = this.node; |
|
|
|
const ctx = canvas.getContext('2d'); |
|
|
|
|
|
|
|
const canvasWidth = canvas.width; |
|
|
|
const canvasHeight = canvas.height; |
|
|
|
const radius = canvasWidth / 2; |
|
|
|
@ -115,7 +116,7 @@ class WaterWave extends PureComponent { |
|
|
|
|
|
|
|
const gradient = ctx.createLinearGradient(0, 0, 0, canvasHeight); |
|
|
|
gradient.addColorStop(0, '#ffffff'); |
|
|
|
gradient.addColorStop(1, '#1890FF'); |
|
|
|
gradient.addColorStop(1, color); |
|
|
|
ctx.fillStyle = gradient; |
|
|
|
ctx.fill(); |
|
|
|
ctx.restore(); |
|
|
|
@ -123,7 +124,7 @@ class WaterWave extends PureComponent { |
|
|
|
|
|
|
|
function render() { |
|
|
|
ctx.clearRect(0, 0, canvasWidth, canvasHeight); |
|
|
|
if (circleLock) { |
|
|
|
if (circleLock && type !== 'update') { |
|
|
|
if (arcStack.length) { |
|
|
|
const temp = arcStack.shift(); |
|
|
|
ctx.lineTo(temp[0], temp[1]); |
|
|
|
@ -145,7 +146,7 @@ class WaterWave extends PureComponent { |
|
|
|
|
|
|
|
ctx.restore(); |
|
|
|
ctx.clip(); |
|
|
|
ctx.fillStyle = '#1890FF'; |
|
|
|
ctx.fillStyle = color; |
|
|
|
} |
|
|
|
} else { |
|
|
|
if (data >= 0.85) { |
|
|
|
@ -180,7 +181,6 @@ class WaterWave extends PureComponent { |
|
|
|
} |
|
|
|
self.timer = requestAnimationFrame(render); |
|
|
|
} |
|
|
|
|
|
|
|
render(); |
|
|
|
} |
|
|
|
|
|
|
|
|