ECharts 图表,已经对数据和屏幕改动进行了监听,能够动态渲染图表数据和大小。在监听窗口小大的模块,使用了防抖函数来控制更新频率,节约浏览器性能。
一个基于 React、Dva、DataV、ECharts 框架的 " 数据大屏项目 "。支持数据动态刷新渲染、屏幕适配、数据请求模拟、局部样式、图表自由替换/复用等功能。
项目需要全屏展示(按 F11)。
项目环境:react^16.2、webpack-4.0、npm-6.13、node-v12.16。
请拉取 master 分支的代码,其余是开发分支。
npm i lib-flexible --save
npm i postcss-px2rem --save
安装大屏的插件,也就是将px转换成rem的插件:
对大屏的插件进行配置
npm install --save echarts-for-react
npm install --save echarts // echarts-for-react包依赖echarts
import ReactEcharts from 'echarts-for-react'
在 render 函数中使用
<ReactEcharts
option={this.getChartOptions()} // option:图表配置项
onEvents={onEvents}
notMerge={true}
lazyUpdate={true}
style={{height: '230px', left: '12px', top: '-8px'}}
/>
ReactEcharts组件只有一个API getEchartsInstance,利用这个方法可以获取echarts实例对象,从而可以调用echarts实例的所有API。
注册主题:
import echarts from 'echarts';
echarts.registerTheme('my_theme', {
backgroundColor: '#f4cccc'
});
<ReactEcharts
option={this.getOption()}
theme='my_theme'
/>
onEvents:
let onEvents = {
'click': this.onChartClick,
'legendselectchanged': this.onChartLegendselectchanged
}
<ReactEcharts
option={this.getOption()}
style={{height: '300px', width: '100%'}}
onEvents={onEvents}
/>
opts:
<ReactEcharts
ref={(e) => {this.echarts_react = e;}}
option={this.getOption()}
/>
let echarts_instance = this.echarts_react.getEchartsInstance();
let base64 = echarts_instance.getDataURL();
import React from 'react';
import { PageContainer } from '@ant-design/pro-layout';
import ReactEcharts from 'echarts-for-react';
export default () => {
const lineOption = () => {
const option = {
xAxis: {
type: 'category',
data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
},
yAxis: {
type: 'value',
},
series: [
{
data: [150, 230, 224, 218, 135, 147, 260],
type: 'line',
},
],
tooltip: {
show: true,
trigger: 'axis',
},
};
return option;
};
const onChartClick = (param, echarts) => {
console.log(param, echarts);
};
const onChartLegendselectchanged = (param, echarts) => {
console.log(param, echarts);
};
return (
<PageContainer>
<ReactEcharts
option={lineOption()}
onEvents={{
click: onChartClick,
mousedown: onChartClick,
legendselectchanged: onChartLegendselectchanged,
}}
></ReactEcharts>
</PageContainer>
);
};
链接: echarts-for-react的git代码库
大屏目录结构参考:
链接: echarts-for-react的超酷效果展示