如果使用echarts自带的clear()和dispose()方法没有明显效果的话,可以使用页面的loseContext()对echarts进行手动清除,最好放到router.js里的路由守卫(router.beforeEach)里执行,也可以在APP.vue下监听路由的变化进行清除,自行决定即可,具体代码如下
const canvasArr = document.getElementsByTagName("canvas");
console.log(canvasArr);
for (let i = 0; i < canvasArr.length; i++) {
if (canvasArr[i].id == "myCanvas") {//这里给不想进行清空的canvas进行匹配跳过清除,前提是给它加上对应的id
} else {
canvasArr[i]
.getContext("webgl")
?.getExtension("WEBGL_lose_context")
.loseContext();
}
}