【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.

相关推荐
软件技术NINI12 分钟前
圣罗兰彩妆html+css 4页
前端·css·html
2601_9516152042 分钟前
网站模板 网站网页模板下载
前端·网络·html
酷炫码神1 小时前
Day 1|HTML5:一个商城首页的骨架,从 DOCTYPE 到语义化
前端·html·html5
AI源码2 小时前
鲜花商城(HTML 版)
前端·html
hiahiahia1232 小时前
Message 和对话
服务器·前端·数据库
雪芽蓝域zzs2 小时前
第 7 节:多边形点击弹窗 + 清空绘制按钮
vue.js
溪语流沙2 小时前
【Web全栈进阶】Composition API与组件通信:props深入、emit、插槽
前端·css·vue.js
ZoeLandia2 小时前
TypeScript 03:泛型与工具类型
前端·typescript
code_Bo2 小时前
从策划到上线:我和 AI 一起做了个微信记账小程序
前端·ai编程·cursor
Shirley~~3 小时前
Three.js加载Gltf模型并播放动画
前端·3d