小程序官方樣例北苟,以及百度能搜到的echarts在小程序里使用的樣例蒋失,都會(huì)在Page()
之外定義一個(gè)chart
正什,用來chart.setOption()
而不必重新setData(ec)
丑慎。
但是當(dāng)在組件中使用echarts移剪,且該組件是列表渲染(在父組件中循環(huán)子組件)究珊,發(fā)現(xiàn)子組件中的echart圖表會(huì)互相影響!
如下:
<view>
<child wx:for="{{items}}"></child>
</view>
<child>
<ec-canvas ec="{{ec}}"/>
</child>
child/index.js
let chart // debug后發(fā)現(xiàn)多個(gè)child組件之間共享chart變量挂滓,導(dǎo)致圖表無法正確顯示
Component({
properties:{
...
},
data:{
ec: {
onInit: function initChart(canvas, width, height) {
chart = echarts.init(canvas, null, {
width,
height
})
canvas.setChart(chart)
chart.setOption(option)
return chart[index]
}}
})
如上圖苦银,debug之后發(fā)現(xiàn)啸胧,在用了echarts的子組件的Component()
之外定義的變量chart
,會(huì)在同頁面的同名子組件之間共享幔虏,導(dǎo)致圖表無法正確顯示纺念。
沒想到什么好的解決方案,于是把子組件里的變量chart
定義為數(shù)組想括,用子組件的index
來作為數(shù)組下標(biāo)陷谱,每個(gè)子組件用chart(index)
來接收echarts.init()
。規(guī)避了無法正確加載圖表的問題瑟蜈。
但這不是一個(gè)好的解決方式烟逊。