一、如何安装和引入
安装
1
| npm install echarts --save
|
其他安装方式:官网参考
全局引入
1 2
| import echarts from 'echarts';
|
按需引入
1 2 3 4 5 6 7 8 9 10 11 12
| import echarts from 'echarts/lib/echarts'
import 'echarts/lib/chart/bar'
import 'echarts/lib/component/grid'
import 'echarts/lib/component/title'
import 'echarts/lib/component/tooltip'
import 'echarts/lib/component/legend'
|
推荐使用按需引入,以减少包体积大小
二、如何初始化
在template中添加一个div标签,并设置其宽高,作为echarts初始化的DOM容器
1 2 3
| <template> <div ref="chart" style="width: 500px; height: 500px;"></div> </template>
|
注意:未设置DOM容器宽高时,echarts将不会渲染
在mounted钩子中初始化echarts实例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| export default { data() { return { chartInstance: '' } }, mounted () { const options = {}; this.chartInstance = echarts.init(this.$refs.chart); this.chartInstance.setOptions(options); } }
|
三、如何响应数据变化进行重绘
将options作为计算属性,根据传入的props进行计算,当依赖的props变化时,options同时进行变化,然后监听options变化进行重绘。一个简单的条形图示例如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| export default { props: { list: { type: Array, default: () => [] } }, data() { return { chartInstance: '' } }, computed: { options() { const xAxisData = this.list.map(item => item.category); const barData = this.list.map(item => item.value); return { xAxis: { type: 'category', data: xAxisData }, yAxis: { type: 'value' }, series: [{ data: barData, type: 'bar' }] }; } }, watch: { options(newValue) { this.chartInstance && this.chartInstance.setOption(newValue); } }, mounted() { this.chartInstance = echarts.init(this.$refs.chart); this.chartInstance.setOption(this.options); } }
|
四、如何自适应容器大小
1、获取外部容器(组件父元素)的大小
2、设置图表的容器的大小为获取的组件父元素大小
修改mounted钩子中echarts初始化代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13
| export default { mounted() { const parentNode = this.$el.parentNode; const parentNodeStyle = window.getComputedStyle(parentNode); this.$refs.chart.style.width = parentNodeStyle.width; this.$refs.chart.style.height = parentNodeStyle.height; this.chartInstance = echarts.init(this.$refs.chart); this.chartInstance.setOption(this.options); } }
|
echarts通过tooltip的formatter属性,支持用户对tooltip进行自定义,formatter属性有两个类型,一个是字符串模板,