本项目是在实际开发中总结出来的一套基于ec-canvas封装的适用于Taro版本的图表框架。开发者可以通过简单的配置及 React 的语法,快速开发图表,满足各种可视化需求。
为了兼容小程序 Canvas,我们首先去构建ec-canvas下载到本地。其中ec-canvas是echarts官网提供的组件,我们可以自行下载或者去官网自定义构建选择自己需要的图表或插件进行下载。
在项目中引入我们需要的组件库,这里统一将其放在src/components/ec-canvas
文件夹下。大家可将该文件夹导入到自己项目中去。其中echarts.js就是刚我们自行下载的echarts图表插件,可根据实际项目需求自定义下载所需图表然后将其导入。
在components
文件夹下创建pieCharts.js
组件。引入我们刚创建的组件
import * as echarts from "./ec-canvas/echarts";
配置我们的ec-canvas
config = {
usingComponents: {
"ec-canvas": "./ec-canvas/ec-canvas"
}
};
在render函数中使用刚导入的ec-canvas
<ec-canvas
ref={this.refChart}
canvas-id="mychart-area"
ec={this.state.ec}
/>
构建refresh函数初始化图表
refresh(data) {
this.Chart.init((canvas, width, height) => {
const chart = echarts.init(canvas, null, {
width: width,
height: height
});
setChartData(chart, data);
return chart;
});
}
refChart = node => (this.Chart = node);
配置懒加载图表
state = {
ec: {
lazyLoad: true
}
};
这里在setChartData进行配置,并传入charts,data参数。
function setChartData(chart, data) {
let option = {
series : [
{
name: '访问来源',
type: 'pie',
center: ['50%', '50%'],
radius: [0, '60%'],
data: data,
itemStyle: {
emphasis: {
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: 'rgba(0, 0, 0, 0.5)'
}
}
}
]
};
chart.setOption(option);
}
至此饼图已经创建完成,具体的可参考饼图
在需要图表的页面中导入刚创建的图表(饼图)
import PieChart from "../../components/PieChart";
render函数中导入
<PieChart ref={this.refPieChart} />
实例化图表并传入data
componentDidMount() {
const chartData = [
{value:335, name:'直接访问'},
{value:310, name:'邮件营销'},
{value:234, name:'联盟广告'},
{value:135, name:'视频广告'},
{value:1548, name:'搜索引擎'}
];
this.pieChart.refresh(chartData);
}
refPieChart = (node) => this.pieChart = node
至此饼图已经创建完成,饼图如此其他的都是类似的。只要照着这个方式去设置option,我们就可以创建你想要的图表了。
添加配置dataZoom可对图表进行缩放达到滑动的效果,可以参考 pages/Move/Move
的写法。
参见 pages/More/More
的例子,可以在获取数据后再初始化数据。
参见 pages/Add/Add
的例子。