【Vue】在Vue3中使用Echarts的示例 两种方法

十念  论坛元老 | 2025-2-13 02:30:37 | 来自手机 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 1619|帖子 1619|积分 4857


贴个地点~
Apache ECharts官网地点
Apache ECharts示例地点
官网有的时间示例表现不出来,属于正常现象,多进反复就行

开始使用前,记得先安装好echart
  1. npm install echarts --save
复制代码
  以下代码我采用的都是vue文件内全部引入,是否按需引入看各自项目要求进行精简。
    免责声明(bushi)
我采用的版本是:
“echarts”: “^5.6.0”
“vue”: “^3.5.13”
“vite”: “^6.0.5”,
“vite-plugin-vue-devtools”: “^7.7.0”
  
方法一

template渲染部门

最简单的柱状图例子,跟着官方文档走的 -> Apache ECharts - 在项目中引入ECharts
   在vue前面写上的表现区域div块的代码,下面代码是我本身的尝试内容,element-plus(也就是包含el-前缀的标签)是别的的内容,和Echart无关。
  1. <template>
  2.   <div>
  3.     freedomwxe 第一次调试
  4.   </div>
  5.   <div>
  6.     <el-button type="primary">点击</el-button>
  7.   </div>
  8.   <div>
  9.     <span style="margin-left: 30px; color: #666">
  10.       <el-icon :size="20" color="#666" style="top: 4px"><View /></el-icon> 666
  11.     </span>
  12.   </div>
  13.   <div id="main" class="box"></div>
  14. </template>
复制代码
重点在id=main的div块这里,和下面js代码相互对应
  1. <div id="main" class="box"></div>
复制代码
js部门

下面这块代码和上面的vue直接放到一起
   重点在于onMounted这个钩子函数,假如直接贴上到js里,会发现页面内没有生效。
这里myChart用于获取id=main的dom元素,要确保获取到才华表现到上面对应id的div块。
  1. <script setup>
  2. import * as echarts from 'echarts';
  3. import { onMounted } from 'vue';
  4. onMounted(() => {
  5.   // 基于准备好的 dom,初始化 echarts 实例
  6.   const myChart = echarts.init(document.getElementById('main'));
  7.   // 绘制图表
  8.   myChart.setOption({
  9.     title: {
  10.       text: 'ECharts 入门示例'
  11.     },
  12.     tooltip: {},
  13.     xAxis: {
  14.       data: ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子']
  15.     },
  16.     yAxis: {},
  17.     series: [
  18.       {
  19.         name: '销量',
  20.         type: 'bar',
  21.         data: [5, 20, 36, 10, 10, 20]
  22.       }
  23.     ]
  24.   });
  25. });
  26. </script>
  27. <style>
  28.   .box{
  29.     width: 300px;
  30.     height: 300px;
  31.     background-color: rgb(188, 227, 236);
  32.   }
  33. </style>
复制代码
方法一实现结果



方法二

现实在项目中使用,发现第一个有范围性,它可以加载官方文档里最简单的一些图,但是示例那些复杂的却无法正确表现到页面上了,在控制台打印说无法找到对应dom元素(只管代码逻辑上无误,也大概是我采用了lang=ts的缘故)。
然后ai给的思路是在onMounted层内再套一层隔断时间的函数(nextTick不可),至于时间是多少我试过1、10、100、1000都可以。
template部门

随意加上你要的div块,但是id必须与后续js(ts)里匹配
  1. <section class="lt">
  2.     <div class="leftClass">
  3.        <div id="left-top-chart"></div>
  4.     </div>
  5. </section>
复制代码
js or ts部门

有些地方大概存在冗余,根据各自现实代码进行调整
  1. <script lang="ts" setup>
  2. import {onMounted, reactive ,nextTick,ref} from 'vue'
  3. import * as echarts from 'echarts';
  4. // 左上部分
  5. onMounted(() => {
  6.   setTimeout(() => {
  7.     const lt_chartDom = document.getElementById('left-top-chart');
  8.     if (lt_chartDom) {
  9.       // 基于准备好的 dom,初始化 echarts 实例
  10.       const ltChart = echarts.init(lt_chartDom);
  11.       console.log("left-top-chartDom: ", lt_chartDom)
  12.       const ltoption = {
  13.         xAxis: {
  14.           color:[
  15.             '#ffffff',
  16.           ],
  17.           type: 'category',
  18.           boundaryGap: false,
  19.           data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
  20.         },
  21.         yAxis: {
  22.           color:[
  23.             '#ffffff',
  24.           ],
  25.           type: 'value'
  26.         },
  27.         series: [
  28.           {
  29.             color:[
  30.               '#41bcf1',
  31.             ],
  32.             data: [820, 932, 901, 934, 1290, 1330, 1320],
  33.             type: 'line',
  34.             areaStyle: {}
  35.           }
  36.         ]
  37.       };
  38.       ltChart.setOption(ltoption)
  39.     } else {
  40.       console.log("未找到left-top-chart的dom元素")
  41.     }
  42.   }, 1);
  43. });
复制代码
方法二实现结果


over
理解或代码有误之处欢迎指正~

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

十念

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表