使用Vue3封装一个通用echarts组件详解

 更新时间:2024年02月19日 11:41:12   作者:weixin_43160044  
这篇文章主要为大家详细介绍了使用Vue3封装一个通用echarts组件详解的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下

实现这个组件需要引入echarts和vue-echarts插件,使用vue-echarts是因为它帮我们封装了一些很常用的功能,比如监听页面resize后重新渲染功能,本次组件只使用到了autoresize配置,其它可以根据官方文档按需选配

https://github.com/ecomfe/vue-echarts

首先引入echarts和vue-echarts插件

npm install echarts vue-echarts -S

组件定义参数如下

import type { ECBasicOption } from 'echarts/types/dist/shared'
 
const props = defineProps({
  // echarts options 传参
  option: {
    type: Object as PropType<ECBasicOption>,
    required: true,
  },
  // 容器宽度
  width: {
    type: String,
    default: '100%',
  },
  // 容器高度
  height: {
    type: String,
    default: '400px',
  },
})

组件代码如下

<script setup lang="ts">
import { PropType, provide } from 'vue'
import type { ECBasicOption } from 'echarts/types/dist/shared'
import { use } from 'echarts/core'
import { CanvasRenderer } from 'echarts/renderers'
 
// 按需引入
import { PieChart, LineChart, FunnelChart, CustomChart } from 'echarts/charts'
import {
  TitleComponent,
  TooltipComponent,
  LegendComponent,
  GridComponent,
  ToolboxComponent,
} from 'echarts/components'
 
import VChart, { THEME_KEY } from 'vue-echarts'
use([
  CanvasRenderer,
  PieChart,
  TitleComponent,
  TooltipComponent,
  LegendComponent,
  GridComponent,
  LineChart,
  ToolboxComponent,
  FunnelChart,
  CustomChart,
])
 
// 传入主题
provide(THEME_KEY, 'light')
 
const props = defineProps({
  option: {
    type: Object as PropType<ECBasicOption>,
    required: true,
  },
  width: {
    type: String,
    default: '100%',
  },
  height: {
    type: String,
    default: '400px',
  },
})
</script>
 
<template>
  <div class="chart-container" :style="{ width, height }">
    <VChart class="w-full h-full" :option="props.option" autoresize />
  </div>
</template>

到此这篇关于使用Vue3封装一个通用echarts组件详解的文章就介绍到这了,更多相关Vue3封装通用echarts组件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Vue中以HTML形式显示内容并动态生成HTML代码的方法

    Vue中以HTML形式显示内容并动态生成HTML代码的方法

    有的时候我们想在vue中直接显示一个html的网页,如果用富文本方式,那么内容就会太多,那么怎么处理呢?这篇文章主要给大家介绍了关于Vue中如何以HTML形式显示内容并动态生成HTML代码的相关资料,需要的朋友可以参考下
    2024-03-03
  • Vue事件总线怎么用

    Vue事件总线怎么用

    这篇文章主要介绍了Vue事件总线的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-04-04
  • vue中watch监听器用法之deep、immediate、flush

    vue中watch监听器用法之deep、immediate、flush

    Vue是可以监听到多层级数据改变的,且可以在页面上做出对应展示,下面这篇文章主要给大家介绍了关于vue中watch监听器用法之deep、immediate、flush的相关资料,需要的朋友可以参考下
    2022-09-09
  • 基于Vue实现简单的权限控制

    基于Vue实现简单的权限控制

    这篇文章主要为大家学习介绍了如何基于Vue实现简单的权限控制,文中的示例代码讲解详细,具有一定的参考价值,需要的小伙伴可以了解一下
    2023-07-07
  • Vue中四种操作dom方法保姆级讲解

    Vue中四种操作dom方法保姆级讲解

    这篇文章主要介绍了Vue中四种操作dom方法,首先,在vue中强烈禁用原生与jquery来操作DOM元素。我们要充分的利用vue的优势:MVVM,在vue中程序员几乎不操作DOM,只需要维护好数据即可,vue给程序员提供ref引用,不调用api直接获取元素组件的使用
    2023-02-02
  • 在vue中使用vant TreeSelect分类选择组件操作

    在vue中使用vant TreeSelect分类选择组件操作

    这篇文章主要介绍了在vue中使用vant TreeSelect分类选择组件操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • vue-cli中的webpack的config配置全过程

    vue-cli中的webpack的config配置全过程

    文章详细介绍了Vue CLI中webpack的配置文件,包括`dev.env.js`和`prod.env.js`的内容,以及它们是如何通过`webpack-merge`模块进行合并的,文章还解释了这些配置文件中各个参数的作用,如`assetsSubDirectory`、`assetsPublicPath`、`proxyTable`等
    2026-02-02
  • vue菜单栏自适应折叠功能示例

    vue菜单栏自适应折叠功能示例

    这篇文章主要介绍了vue菜单栏自适应折叠,我这里使用的是el-menu导航菜单,监听页面宽度的改变,来改变导航菜单的折叠和展开,本文结合示例代码给大家介绍的非常详细,需要的朋友可以参考下
    2023-01-01
  • vuejs 切换导航条高亮(路由菜单高亮)的方法示例

    vuejs 切换导航条高亮(路由菜单高亮)的方法示例

    这篇文章主要介绍了vuejs 切换导航条高亮路由高亮的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05
  • Vue出现首屏白屏的六种解决方法小结

    Vue出现首屏白屏的六种解决方法小结

    这篇文章主要为大家详细介绍了Vue中出现首屏白屏的六种解决方法,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以参考一下
    2025-02-02

最新评论