当前位置:首页 > VUE

用vue实现echarts

2026-03-07 17:37:45VUE

使用 Vue 实现 ECharts

安装 ECharts 依赖

在项目中通过 npm 或 yarn 安装 ECharts:

npm install echarts --save
# 或
yarn add echarts

引入 ECharts

在 Vue 组件中直接引入 ECharts:

import * as echarts from 'echarts';

创建图表容器

在模板中定义一个容器元素用于渲染图表:

<template>
  <div id="chart-container" style="width: 600px; height: 400px;"></div>
</template>

初始化图表

mounted 生命周期钩子中初始化图表:

mounted() {
  this.initChart();
},
methods: {
  initChart() {
    const chartDom = document.getElementById('chart-container');
    const myChart = echarts.init(chartDom);
    const option = {
      title: {
        text: '示例图表'
      },
      tooltip: {},
      xAxis: {
        data: ['A', 'B', 'C', 'D', 'E']
      },
      yAxis: {},
      series: [{
        name: '数据',
        type: 'bar',
        data: [10, 20, 30, 40, 50]
      }]
    };
    myChart.setOption(option);
  }
}

响应式调整

监听窗口大小变化,动态调整图表尺寸:

methods: {
  initChart() {
    const chartDom = document.getElementById('chart-container');
    const myChart = echarts.init(chartDom);
    // ... 图表配置
    window.addEventListener('resize', function() {
      myChart.resize();
    });
  }
}

组件销毁时释放资源

beforeDestroy 钩子中销毁图表实例:

beforeDestroy() {
  if (this.myChart) {
    this.myChart.dispose();
  }
}

按需引入模块(可选)

若需优化体积,可仅引入必要的 ECharts 模块:

import * as echarts from 'echarts/core';
import { BarChart } from 'echarts/charts';
import { TitleComponent, TooltipComponent, GridComponent } from 'echarts/components';
import { CanvasRenderer } from 'echarts/renderers';

echarts.use([
  TitleComponent,
  TooltipComponent,
  GridComponent,
  BarChart,
  CanvasRenderer
]);

使用 Vue-ECharts 封装(高级)

对于复杂场景,可封装为可复用组件:

用vue实现echarts

<template>
  <div ref="chartRef" :style="{ width, height }"></div>
</template>

<script>
import * as echarts from 'echarts';

export default {
  props: {
    width: {
      type: String,
      default: '100%'
    },
    height: {
      type: String,
      default: '400px'
    },
    option: {
      type: Object,
      required: true
    }
  },
  data() {
    return {
      chart: null
    };
  },
  watch: {
    option: {
      handler(newVal) {
        if (this.chart) {
          this.chart.setOption(newVal);
        }
      },
      deep: true
    }
  },
  mounted() {
    this.initChart();
  },
  methods: {
    initChart() {
      this.chart = echarts.init(this.$refs.chartRef);
      this.chart.setOption(this.option);
      window.addEventListener('resize', this.resizeHandler);
    },
    resizeHandler() {
      this.chart.resize();
    }
  },
  beforeDestroy() {
    window.removeEventListener('resize', this.resizeHandler);
    if (this.chart) {
      this.chart.dispose();
    }
  }
};
</script>

标签: vueecharts
分享给朋友:

相关文章

vue点击实现排序

vue点击实现排序

实现点击排序的方法 在Vue中实现点击排序功能,可以通过以下几种方式完成: 使用计算属性结合排序方法 定义一个响应式数据存储排序状态,通过计算属性动态返回排序后的数组。点击事件切换排序状态。 d…

vue 实现菜单

vue 实现菜单

Vue 实现菜单的方法 使用 Vue 实现菜单可以通过多种方式,以下是几种常见的方法: 使用 Vue Router 实现动态路由菜单 通过 Vue Router 可以动态生成菜单,根据路由配置自动渲…

vue实现全景

vue实现全景

Vue 实现全景效果的方法 使用 Vue 实现全景效果通常需要结合第三方库或框架,以下是几种常见的方法: 使用 Three.js 和 Vue-Three.js Three.js 是一个强大的 3D…

vue实现弹幕

vue实现弹幕

Vue 实现弹幕功能 弹幕功能通常包括动态生成、滚动显示、颜色和速度随机化等特性。以下是基于 Vue 3 的实现方法。 核心思路 使用 CSS 动画控制弹幕从右向左滚动。 动态生成弹幕数据,随机设置…

vue 实现excel

vue 实现excel

Vue 实现 Excel 功能 前端导出 Excel 使用 xlsx 库可以轻松实现前端 Excel 导出功能。安装依赖: npm install xlsx 导出 Excel 示例代码: impo…

vue实现tabbar

vue实现tabbar

Vue 实现 TabBar 的方法 使用 Vue Router 实现基础 TabBar 安装 Vue Router 依赖: npm install vue-router 创建路由配置文件(route…