隨着React的快速發展,咱們也愈來愈接受它的寫法和思想,現在小程序如火中天,普通的編譯模式早已不適應開發者的需求。人們在不斷的尋求一種React可以在小程序中編譯的語言框架,所以Taro便誕生了。宇宙中最強的執行官。它支持使用 React 的開發方式來編寫能夠同時在微信小程序、Web 、React Native 等多個平臺上運行的應用。通過不斷地迭代完善,已經讓 Taro 浴火重生。html
本項目是在實際開發中總結出來的一套基於ec-canvas封裝的適用於Taro版本的圖表框架。開發者能夠經過簡單的配置及 React 的語法,快速開發圖表,知足各類可視化需求。node
爲了兼容小程序 Canvas,咱們首先去構建ec-canvas下載到本地。其中ec-canvas是echarts官網提供的組件,咱們能夠自行下載或者去官網自定義構建選擇本身須要的圖表或插件進行下載。git
在項目中引入咱們須要的組件庫,這裏統一將其放在src/components/ec-canvas
文件夾下。你們可將該文件夾導入到本身項目中去。其中echarts.js就是剛咱們自行下載的echarts圖表插件,可根據實際項目需求自定義下載所需圖表而後將其導入。github
在components
文件夾下建立pieCharts.js
組件。引入咱們剛建立的組件canvas
import * as echarts from "./ec-canvas/echarts";小程序
配置咱們的ec-canvas微信小程序
config = {
usingComponents: {
"ec-canvas": "./ec-canvas/ec-canvas"
}
};
複製代碼
在render函數中使用剛導入的ec-canvasbash
<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);
複製代碼
配置懶加載圖表echarts
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,咱們就能夠建立你想要的圖表了。
從鮮爲人知到家喻戶曉,Taro如今也逐漸被開發者所接受。在將來的道路上應該還會更火,畢竟是宇宙中最強的執行官。然而一個好的框架也是須要大部分工具輔助的。就比如ADC旁邊總跟着個輔助。其中圖表在Taro中目前尚未一個統一的開發規範,目前這僅是咱們團隊中使用的一種方式。目前也正在抽離出單獨針對Taro-echarts包。志同道合歡迎提issue一塊兒加入咱們。