针对echarts图表在a-tab标签页不能重加载问题

问题:在使用a-tab标签属性切换时,先出现了第二个标签页的echarts图表不能回显问题,修改后能回显,但要第二次点击切换标签页才回回显。

不管是使用封装函数,封装数组,封装组件等方法,都实现不了在标签页中回

问题解决进程

1.第一个标签页能显示,第二个却不能显示

结合csdn以及一些帖子,发现是Echarts图表在第二个页面渲染的时候无法拿到父元素的高度和宽度造成的

给盒子定了一个高后,发现还是不行,但是在箭头函数handleTabChange上调用两个echarts函数后,就可以回显echarts图表了,不过还是有问题。

  const handleTabChange = (key) => {
    activeKey.value = key;
      drawChart();
      drawEchart();
  };

切换标签页时,handleTabChange 函数会被触发,传入的 key 参数表示新的活动标签页的键值。函数内部首先更新 activeKey 的值以反映当前活动的标签页,然后调用 drawChart 和 drawEchart 函数重新绘制或更新图表,以确保图表显示的数据与当前选择的标签页一致。

2.每个标签页都能回显echarts图表后,又出现新的问题,第一次切换是不显示,第二次才显示。

判断是DOM的更新问题,考虑通过watch监听activeKey 的变化,重新绘制能耗图表和衰减程度图表。

 // 监听 activeKey 的变化,当 activeKey 变化时执行回调函数
  watch(activeKey, (val, oldVal) => {
    // 在下一个 DOM 更新周期后执行回调函数
    nextTick(() => {
      drawChart();
      drawEchart();
    });
  });

监听 activeKey 的变化,当 activeKey 的值发生变化时(即用户切换标签页时),在下一个 DOM 更新周期后重新绘制能耗图表和衰减程度图表。这样可以确保图表在 DOM 更新完成后正确绘制,避免因 DOM 未更新导致的图表绘制问题。

到这里,把在箭头函数handleTabChange 调用的函数删掉,就可以成功回显echarts图表了。

中间的小插曲:语法规范很重要!!!

在前期代码编写是,有些函数使用了vue2写法,有的函数使用了vue3的写法,所以在后面的watch监听是,导致方法不生效。通过代码整理,对vue3的<script setup>正确使用后才能生效。


针对echarts图表在a-tab标签页不能重加载问题
http://localhost:8090//archives/zhen-dui-echartstu-biao-zai-a-tabbiao-qian-ye-bu-neng-chong-jia-zai-wen-ti
作者
chen
发布于
2024年08月10日
许可协议