封装 Echarts 为 Vue.js 组件教程
在上一家公司里,公司的产品用到了大量的图表进行数据可视化,当时公司决定使用的是 Echarts,它是一个与框架无关的 JS 图表库,所以需要自行封装到 react 或 vue 中。今天这个视频来看看如何使用简单的方式把 echarts 封装到 vue 组件中。
#
搭建基础结构首先我们用 Vite 创建一个 vue 项目,命名为 vue-echarts,然后安装 echarts 依赖。
安装完成后,新建一个 Chart 组件,作为基础组件加载并初始化 echarts 容器,并根据配置的变化更新图表。
#
初始化 EchartsEcharts 需要一个 dom 元素作为容器,并调用它的 init()方法进行初始化,那么在 vue 中获取 dom 元素需要使用 template ref,而在 vue3 中,template ref 跟响应式状态的 ref 合为了一体,所以,我们定义一个 ref 来保存 dom 元素。
ref 中保存的元素在 dom 加载完成之后才会有值,所以我们需要在 onMounted 生命周期中获取它,因为这时 dom 已经加载完成了。获取了容器之后,就可以使用 echarts.init() 初始化了,这里导入 echarts 库进行初始化,使用深色主题,初始化后会返回 echarts 实例:
接着让 Chart 组件接收一个 options 属性,用于接收图表配置,在 echarts 初始化完成以后把配置传给 echarts 实例,options 是一个必须的属性,类型为对象,默认值是空的对象:
#
监听配置变化这个时候,Chart 组件虽然可以使用了,但是当 options 变化的时候,图表不会刷新,我们可以在这里使用 watch ,对 options 进行监听,当 options 发生变化时,调用 echarts.setOption() 更新配置,不过,在 watch 里不能访问 onMounted() 里边的 echarts 实例,这时我们可以把 echarts 实例也保存在 ref 中,这样,就可以在 watch 中使用了:
watch 中的代码很简单,就是调用 echarts.setOptions(),把新的 options 值传递进去就行了。watch 第一个参数可以是一个 ref,我们把 options 转换为 ref 传递给它,第二个参数是处理函数,它接受两个参数,分别是监听属性新变化的值和之前的值,我们把新变化的值传递给 echarts,这样就可以重新绘制图表了。第三个参数为是否深度对比,对于配置项这种嵌套比较多的对象,需要设置为 true。
最后加上 css,给容器设置宽高为 100%,具体的真实宽高让使用它的组件来设置,这里要注意 echarts 要求必须设置宽高才能正常绘制。
#
加载图表我们试试加载一个图表,从 echarts 官网找一个示例配置,例如柱状图,复制下来,然后在 src 目录下创建一个 charts 文件夹,存放图表数据,新建一个 barChartOptions.js 文件,粘贴刚才复制的配置,我们这里可以导出一个函数,以后可以通过参数来传递数据和自定义的配置项:
然后新建一个 BarChart 组件:
再在 App 组件中引入它,设置 class 为 chart,然后给 App 组件的 div 容器和图表设置一下宽高、背景、对齐等样式:
回到 BarChart 组件中,引入 Chart 组件和配置项,最后在 template 中加载图表,注意这里配置项是个函数,需要使用小括号进行调用,这时图表就加载成功了:
现在可以随便修改一下图表配置(例如某个数据项),保存,看到可以重新绘制图表了,不过有时候后改多了,图表不会重新绘制,这时候重新启动下服务就好了,不知是不是 Vite 的原因,这个有精力的小伙伴可以研究一下。 好了,这个就是封装 Echarts 为 Vue.js 组件教程,如果有帮助,请三连,想更好的学前端,请关注峰华前端工程师,感谢观看!