今天uniapp項目中使用ucharts畫一個分組柱狀圖,小程序預覽時發現點擊時顏色一直閃爍,背景也一直閃爍。
后來發現問題所在:
原來的情況是需要彈出選擇框,但是canvas小程序的層級太高會遮住原生組件,所以需要在彈出選擇框時轉換成圖片。所以我在每次圖像渲染完成后都使用uni.canvasToTemplateFile把該canvas轉換成圖片格式,代碼如下:
canvaColumn.addEventListener('renderComplete', () => {
uni.canvasToTempFilePath({
canvasId: "canvasColumn",
success: (res) => {
console.log("圖表渲染完成");
that.canvasImg = res.tempFilePath;
}
complete(res){
console.log(res);
}
}, that)
});
后來發現每一次拖動圖表,都會執行很多次的重新渲染,且點擊也會重新渲染,才意識到可能是這個問題,
解決方法:只在彈出選擇框時執行canvasToTemPlate方法,果然解決了
