Canvas图表在Vue中无法正确重绘,数据更新后画面还是旧的怎么办?
我在用Vue做动态图表,每次数据变了就调用drawChart()重绘Canvas,但画布上还是显示老数据,好像没刷新一样。是不是要手动清空画布?
试过在drawChart开头加clearRect,但有时候还是残留旧内容,特别是在快速切换数据的时候。
<template>
<canvas ref="chartCanvas" width="400" height="300"></canvas>
</template>
<script>
export default {
methods: {
drawChart() {
const ctx = this.$refs.chartCanvas.getContext('2d');
// 这里画折线图
ctx.beginPath();
ctx.moveTo(0, 100);
ctx.lineTo(200, 50);
ctx.stroke();
}
},
watch: {
chartData: {
handler() { this.drawChart(); },
deep: true
}
}
}
</script>
改用 nextTick + clearRect 就搞定: