echarts 官网:https://echarts.apache.org/zh/index.html
首先先下载
npm i echarts -S
第二步页面引入:、
import echarts from 'echarts'
第三步页面使用。我这里写了个demo,自己模拟了一个json数据。然后axios请求数据。存在state里,把state的数据弄到图标中。 注意,外层盒子一定要设置高度。
import React, { Component } from 'react';
import echarts from 'echarts'
import Axios from 'axios'
import './styles.less'
export default class Echarts extends Component {
state = {
data: []
}
//请求数据
getEchartsData = () => {
Axios.get('/echartsData.json').then(res => {
this.setState({
data: res.data.list
})
this.initEcharts(); //调用下 封装的Echarts
})
}
onResize = () => {
this.myChart.resize()
}
//封装Echarts
initEcharts = () => {
// var myChart = echarts.init(document.getElementsByClassName('echarts_wrap')[0]);
this.myChart = echarts.init(this.el);
// 指定图表的配置项和数据
var option = {
tooltip: {
trigger: 'item',
formatter: '{a} <br/>{b}: {c} ({d}%)'
},
legend: {
orient: 'vertical',
left: 10,
data: ['直接访问', '邮件营销', '联盟广告', '视频广告', '搜索引擎']
},
series: [
{
name: '访问来源',
type: 'pie',
radius: ['50%', '70%'],
avoidLabelOverlap: false,
label: {
show: false,
position: 'center'
},
emphasis: {
label: {
show: true,
fontSize: '30',
fontWeight: 'bold'
}
},
labelLine: {
show: false
},
data: this.state.data
}
]
};
// 自动缩放 拖动屏幕
window.addEventListener('resize', this.onResize)
// 处理点击事件判断点击的哪一个,进行一些逻辑处理
this.myChart.on('click', function (params) {
switch (params.name) {
case '直接访问':
console.log('直接访问')
break;
case '邮件营销':
console.log('邮件营销')
break;
default:
break;
}
});
// 使用刚指定的配置项和数据显示图表。
this.myChart.setOption(option);
}
componentDidMount() {
this.getEchartsData() //调用获取的数据
}
componentWillUnmount () {
window.removeEventListener('resize', this.onResize) //销毁
}
render() {
return (
<div className='views_echarts'>
<div className='echarts_wrap' ref={v => this.el = v}></div>
</div>
)
}
}