echarts 短时间内重新渲染图标不显示/空白问题

1.问题详细描述

项目框架背景是vue3,在页面实现echarts时,出现了在首次渲染echarts图表>退出系统->再次进入echarts图表页面的过程中,再次进入echarts图表时 不显示的问题。效果图如下。

2.解决方法

在观察中,得知数据获取中并没有问题,那就是在数据在图表的渲染过程中出现了问题。

再去观察图表的渲染过程层,发现图表的DOM种存在一个特殊的属性,_echarts_instance_。

这个东西相当于是一个ID,图表在每次刷新的过程中,它都会发生变化,然后重新渲染。

联想到我使用的Vue+vue-router的框架,答案就呼之欲出了。我猜测的是,由于存在这个属性的变更,但是vue的渲染特殊性,在页面跳转与返回时,修改的是路由,导致图标ec并没有发生改变,导致在渲染的时候,echarts认为并不需要重新渲染,导致出现有数据但是没有出现图标的问题。

到这里就可以针对性解决这个问题。找到这个属性,将它删除。

const LC = document.getElementById("chartLeft")
LC.removeAttribute('_echarts_instance_');
let leftChart = echarts.init(LC);
leftChart.setOption(option)

再次尝试,果然就OK了。

问题虽然暂时解决了,但是在去翻echarts API的时候,并没有找到相关的介绍。这里我就默认是这个原因了 也许是误打误撞刚好解决了问题,也许这样解决问题还有着什么弊端。如果看到这篇文章的你有兴趣(默认你也出现了这样的问题),可以深究问题,回来贴一下答案。

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: 要重新渲染 ECharts,可以使用 ECharts 实例的 `setOption` 方法来更新图表数据和配置。例如: ```javascript // 获取 ECharts 实例 var chart = echarts.init(document.getElementById('myChart')); // 更新数据和配置 chart.setOption({ series: [{ data: [10, 20, 30, 40, 50] }] }); ``` 如果需要重新加载 ECharts,可以先销毁原有实例,然后重新创建一个新的实例。例如: ```javascript // 获取 ECharts 实例 var chart = echarts.init(document.getElementById('myChart')); // 销毁原有实例 chart.dispose(); // 创建新的实例 var newChart = echarts.init(document.getElementById('myChart')); // 加载数据和配置 newChart.setOption({ series: [{ data: [10, 20, 30, 40, 50] }] }); ``` ### 回答2: ECharts 是一个开源的数据可视化库,提供了丰富的图表和交互功能。在使用 ECharts 进行数据可视化时,我们有时候需要对图表进行重新渲染重新加载。 重新渲染是指对已经存在的图表进行更新操作,可以通过调用 ECharts 实例的 setOption 方法来更新图表的数据和配置。具体而言,我们可以通过修改传入 setOption 方法的参数来更新图表的数据,然后再调用实例的 setOption 方法,将更新后的参数传入进行重新渲染。这样就能够实现对图表的数据更新和图表的重绘,不会破坏已有的图表实例。 重新加载是指在已经存在的页面上,重新创建一个新的图表实例。通常情况下,我们需要在重新加载之前销毁已经存在的图表实例,以避免出现重复绘制图表的问题。一般可以通过调用 ECharts 实例的 dispose 方法来销毁,然后再重新初始化一个新的实例,加载新的配置和数据来创建新的图表。 需要注意的是,在进行重新渲染重新加载时,我们可以改变图表的数据和配置,但是一般情况下不会改变图表所在的容器。这样可以确保在界面上图表的位置和样式保持一致,方便用户进行交互和观察。 总而言之,ECharts 提供了灵活的方法来重新渲染重新加载图表,通过更新图表的数据和配置,或者销毁并重新创建新的实例,我们可以实现对图表的动态更新和切换,提升用户体验和数据展示效果。 ### 回答3: ECharts是一种基于JavaScript开发的图表库,它可以以可视化的方式呈现数据。当需要重新渲染重新加载ECharts图表时,我们可以采取以下方法: 1. 重新渲染:当图表的数据或配置发生变化时,可以使用ECharts提供的setOption方法进行重新渲染。这个方法接受一个配置项对象作为参数,该对象包含了新的数据和配置。调用setOption方法后,ECharts会自动重新渲染图表,更新显示的内容。 2. 重新加载:当需要重新加载整个图表时,可以通过销毁当前图表实例再重新创建一个新的实例来实现。首先我们需要获取到图表的容器元素,可以使用document.getElementById方法或其他方式获取。然后使用ECharts提供的dispose方法销毁当前实例,代码示例如下: ```javascript var chartContainer = document.getElementById('chart-container');//获取图表容器 var chartInstance = echarts.getInstanceByDom(chartContainer);//获取当前图表实例 if (chartInstance) { echarts.dispose(chartContainer);//销毁当前实例 } ``` 接着我们可以重新创建一个新的实例,并将其绑定到图表容器上,代码示例如下: ```javascript var newChartInstance = echarts.init(chartContainer);//创建新的实例 //根据新的数据和配置对newChartInstance进行设置 newChartInstance.setOption({...}); ``` 通过使用上述方法,我们可以实现ECharts图表的重新渲染重新加载,以便及时更新数据和配置,呈现最新的图表内容。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值