【Echarts】vue3打开echarts的正确方式

ECharts 是一个功能强大、灵活易用的数据可视化工具,适用于商业报表、数据分析、科研教育等多种场景。那么该如何优雅的使用Echarts呢? 这里以vue3为例。

安装echarts

bash 复制代码
pnpm i echarts

封装公用方法

ts 复制代码
// @ts-nocheck
import * as echarts from 'echarts';
// 我们这里借助vueUse提高可视化体验, useResizeObserver监听dom大小改变, useDebounceFn监听中添加防抖
import { useResizeObserver, useDebounceFn } from '@vueuse/core';
// 引入地图json 按需,不是地图则不需要
// import china from './china.json';
// echarts.registerMap('china', china);

/**
 * @param el 图表挂在dom
 * @param options 图表配置
 */
export function useECharts(el: HTMLElement, options: echarts.EChartsOption) {
  let chart: any;
  // 图表初始化
  chart = echarts.init(el);
  // 设置图表配置
  chart.setOption(options);
  // 挂载dom宽度改变监听重新渲染图表
  useResizeObserver(
    el,
    useDebounceFn(() => {
      chart.resize();
    }, 50)
  );
  // 定义setData方法
  const setData = (dataset: echarts.DatasetOption | echarts.DatasetOption[]) => {
    chart.setOption(Object.assign(options, { dataset }));
  };
  // 返回echarts实例,和更新data方法,方便更新图表
  return [chart, { setData }];
}

图表使用

html 复制代码
<template>
  <div ref="helloChartRef" class="chart"></div>
</template>
<script setup lang="ts">
  import { onMounted, ref } from 'vue';
  import { useECharts } from '@/utils';
  import type { EChartsType } from 'echarts';

  let chart: EChartsType;
  const helloChartRef = ref();
  const theme = ref('dark');

  onMounted(() => {
  	// todo 为了vue模板看起来干净,可以吧options抽离到外部js中去
    chart = useECharts(helloChartRef.value, {
      xAxis: {
        // x轴
        data: ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子'],
      },
      yAxis: {
        // y轴
      },
      toolbox: {
        // 工具箱 官方文档:http://echarts.apache.org/zh/option.html#toolbox
        feature: {
          // 按钮的位置和配置参数的排序有关
          restore: {}, // 刷新按钮
          dataZoom: {
            // 缩放按钮
            yAxisIndex: false, // 不选取y轴的坐标(就是全选y轴)
          },
          saveAsImage: {}, // 保存为图片的按钮
        },
      },
      series: {
        // 图表类型
        name: '销量',
        type: 'bar',
        data: [5, 20, 36, 10, 10, 20],
      },
    });
  });
</script>

<style lang="less" scoped>
  .chart {
    height: 300px;
  }
</style>

效果

是不是很容易就上手了呢,也可以到我自己部署的案例网站看实际效果呢,还可以边看效果边看源码。

相关网站

摸鱼博客就写到这啦,听我说谢谢你,因为有你,我的博客浏览+1.

相关推荐
counterxing2 小时前
我整理了一个免费开发资源目录,还做成了 CLI 和 MCP
前端·agent·ai编程
子兮曰9 小时前
Bun v1.3.14 深度解析:Image API、HTTP/3、全局虚拟存储与五十项变革
前端·后端·bun
kyriewen10 小时前
今天,百年巨头一次砍了9200人,而一个离职科学家的实话让全网睡不着觉
前端·openai·ai编程
问心无愧051310 小时前
ctf show web 入门42
android·前端·android studio
kyriewen11 小时前
老板逼我上AI,我偷偷在浏览器里跑LLaMA,省下20万API费
前端·react.js·llm
Beginner x_u11 小时前
前端八股整理(手写 02)|数组转树、数组扁平化、随机打乱一个数组
前端·数组·数组转树·数组扁平化
KaMeidebaby11 小时前
卡梅德生物技术快报|禽类成纤维细胞 FISH 实验:鸟类性别染色体基因定位技术实现与数据验证
前端·数据库·其他·百度·新浪微博
天若有情67311 小时前
前端高阶性能优化:跳出传统懒加载与预加载,基于用户行为做轻量预判加载
前端·性能优化
小小小小宇11 小时前
前端转后端:SQL 是什么
前端
张元清12 小时前
React Observer Hooks:7 种监听 DOM 而不写样板代码的方式
前端·javascript·面试