echars 5.0之前引入用
import echarts from 'echarts' //引入echarts
echars 5.0之后引入用
import * as echarts from 'echarts' //引入echarts
vue2 echarts组件
<template> <div> <div id="main" ref="mycharts" class="chatscss"></div> </div> </template> <script> import echarts from 'echarts' //引入echarts 4.8.0 export default { props:['sourceData'], name: "echart", data(){ return{ initmycharts:null } }, mounted() { this.$nextTick(()=>{ this.init() }) }, watch:{ sourceData:{ handler: function (val, oldVal) { this.init() }, //不要使用箭头函数,否则this无法指向vue对象 deep: true //遇到对象或者复合结构要开启深度监听,简单数组不需要开启 }, }, methods:{ init(){ var chartDom = document.getElementById('main'); this.initmycharts = echarts.init(chartDom); var option; option = { xAxis: { type: 'category', data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] }, yAxis: { type: 'value' }, series: [ { data: this.sourceData,//[150, 230, 224, 218, 135, 147, 260], type: 'line' } ] }; option && this.initmycharts.setOption(option); window.addEventListener('resize', ()=>{ this.initmycharts.resize() }) } } } </script> <style scoped> .chatscss{ height: 400px;width: 100% } </style>
调用:
<myecharts :sourceData="testData"></myecharts> testData:[150, 230, 224, 218, 135, 147, 860], mounted() { setTimeout(()=>{ this.testData = [150, 230, 224, 218, 135, 147, 60] },2000) }
vue3 组件
<template> <div id="main" class="mycharts" ref="mycharts"></div> </template> <script setup> import * as echarts from 'echarts'; //引入 5.5.0 import {effectScope,computed,ref,watch,watchEffect,reactive,watchPostEffect,getCurrentScope,onScopeDispose,defineOptions,onMounted,nextTick} from 'vue' const mycharts = ref(null) var init = ()=>{ var myChartdom = echarts.init(mycharts.value); var option = { title: { text: 'ECharts 入门示例' }, tooltip: {}, legend: { data:['销量'] }, xAxis: { data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"] }, yAxis: {}, series: [{ name: '销量', type: 'bar', data: [5, 20, 36, 10, 10, 20] }] }; // 使用刚指定的配置项和数据显示图表。 myChartdom.setOption(option); window.onresize = function () { //自适应大小, 不用的话不会自适应大小。 myChartdom.resize(); }; } onMounted(()=>{ init() }) </script> <style scoped> </style>
调用:
<echarts></echarts> <script setup> import echarts from './echarts.vue' </script>