当前位置:首页 > 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循环数组的实现方法 在Vue中循环数组主要通过v-for指令实现,以下是几种常见用法: 基本数组循环 使用v-for指令遍历数组,可以通过(item, index)的语法获取当前项和索引值:…

vue实现下载暂停

vue实现下载暂停

Vue实现下载暂停功能 在Vue中实现下载暂停功能,通常需要结合XMLHttpRequest或Fetch API的AbortController来控制请求中断。以下是具体实现方法: 使用XMLHtt…

vue实现下拉刷新组件

vue实现下拉刷新组件

实现下拉刷新组件的核心思路 下拉刷新功能通常通过监听触摸事件、滚动位置和动画效果实现。Vue中可以利用自定义指令或封装组件完成,以下为两种常见实现方式。 基于自定义指令的实现 创建指令监听触摸事件,…

vue交互实现

vue交互实现

Vue 交互实现方法 Vue.js 提供了多种方式实现用户交互,包括事件处理、表单绑定、动态渲染等。以下是常见的交互实现方法: 事件处理 通过 v-on 或 @ 指令绑定事件,触发方法或直接执行表达…

vue 实现级联

vue 实现级联

Vue 实现级联选择器 级联选择器(Cascader)常用于省市区选择、分类选择等场景。Vue 中可以通过 Element UI、Ant Design Vue 等 UI 库实现,也可以手动封装。 使…

vue实现盖章

vue实现盖章

Vue 实现盖章功能 在Vue中实现盖章功能通常涉及前端UI交互,通过Canvas或SVG绘制印章,并允许用户拖拽或点击放置印章。以下是具体实现方法: 使用Canvas绘制印章 通过HTML5的Ca…