echarts 图表不显示的问题

是这样的,点击详情,再点击统计,切换的时候就不会显示echarts图表,刚开始使用的是next Tick,没有使用定时器,后来加上了定时器就实现了在这里插入图片描述如下所示:在这里插入图片描述
代码是如下

const chartContainer = ref(null); // 用于引用 DOM 容器
let chartInstance: echarts.ECharts | null = null; // 用于存储 ECharts 实例
// 渲染图表
const renderChart = () => {
  const option = {
    title: {
      text: `调用量统计`,
      left: 10
    },
    toolbox: {
      feature: {
        dataZoom: {
          yAxisIndex: false
        },
        saveAsImage: {
          pixelRatio: 2
        }
      }
    },
    tooltip: {
      trigger: 'axis',
      axisPointer: {
        type: 'shadow'
      },
      show: true
    },
    dataset: {
      source: [
        ['time', dataCount.value.categories],
        ['completion_token', dataCount.value.comptoken],
        ['prompt_token', dataCount.value.prompttoken],
        ['total_token', dataCount.value.totaltoken]
      ]
    },
    grid: {
      bottom: 90
    },
    dataZoom: [
      {
        type: 'inside'
      },
      {
        type: 'slider'
      }
    ],
    xAxis: {
      data: dataCount.value.categories,
      silent: false,
      splitLine: {
        show: false
      },
      splitArea: {
        show: false
      }
    },
    yAxis: [
      { scale: true }
    ],
    series: [
      { type: 'bar', seriesLayoutBy: 'row', name: 'Completion Token', data: dataCount.value.comptoken },
      { type: 'bar', seriesLayoutBy: 'row', name: 'Prompt Token', data: dataCount.value.prompttoken },
      { type: 'bar', seriesLayoutBy: 'row', name: 'Total Token', data: dataCount.value.totaltoken }
    ]
  };
  chartInstance?.setOption(option);
};
// 初始化图表
const initChart = () => {
  if (chartContainer.value) {
    chartInstance = echarts.init(chartContainer.value);
    renderChart();
  }
};
const handleTabChange1 = async (names: string) => {
  if (names === 'oasis') {
    if (chartInstance) {
      chartInstance.dispose(); // 销毁旧的图表实例
    }
      initChart();
  }
};
// 生命周期钩子
onMounted(() => {
    initChart();
});

onUnmounted(() => {
  if (chartInstance) {
    chartInstance.dispose(); // 销毁 ECharts 实例
    chartInstance = null;
  }
});
  <NTabs default-value="oasis" justify-content="space-evenly" type="line" 		        @update:value="handleTabChange1">
       <NTabPane name="oasis" tab="调用量统计">
        <div ref="chartContainer" class="h-500px w-100%"></div>
       </NTabPane>
       <NTabPane name="the beatles" tab="调用量详情">
         <NDataTable :columns="columns" :data="dataTable" :bordered="false" />
      </NTabPane>
   </NTabs>

刚开始我是这样写的,然后在点击tab切换的时候,echarts图表咋的都出不来,后来看了好多方法,使用nextTick 和定时器 实现了
再点击切换的时候,使用nextTick

const handleTabChange1 = async (names: string) => {
  if (names === 'oasis') {
    if (chartInstance) {
      chartInstance.dispose(); // 销毁旧的图表实例
    }
    await nextTick(() => {
      initChart();
    });
    setTimeout(() => {
      initChart();
    }, 500);
  }
};

希望可以帮到你们!!

相关推荐

  1. echarts初始化时只显示100px问题

    2024-06-06 20:26:07       33 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-06 20:26:07       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-06 20:26:07       100 阅读
  3. 在Django里面运行非项目文件

    2024-06-06 20:26:07       82 阅读
  4. Python语言-面向对象

    2024-06-06 20:26:07       91 阅读

热门阅读

  1. Linux 文件权限管理中有关rwx的细节

    2024-06-06 20:26:07       30 阅读
  2. 使用element的过渡效果来做动效

    2024-06-06 20:26:07       29 阅读
  3. 设计模式-中介者模式

    2024-06-06 20:26:07       31 阅读
  4. MySQL如何多表关联更新

    2024-06-06 20:26:07       28 阅读
  5. Ubuntu中安装和配置SSH的完全指南

    2024-06-06 20:26:07       30 阅读
  6. linux实用命令

    2024-06-06 20:26:07       24 阅读
  7. uniapp vue input和textarea 的用法区别,一篇就懂

    2024-06-06 20:26:07       35 阅读
  8. vue2组件封装+elementUI

    2024-06-06 20:26:07       28 阅读
  9. 探索未来科技的前沿:从量子计算到人机融合

    2024-06-06 20:26:07       25 阅读
  10. 一些常用的 ADB(Android Debug Bridge)命令

    2024-06-06 20:26:07       23 阅读
  11. QT窗口类型以及非模态窗口如何显示在顶层

    2024-06-06 20:26:07       26 阅读
  12. Python 变量标签:深入解析其用法与影响

    2024-06-06 20:26:07       29 阅读