国语自产少妇精品视频蜜桃,国产日韩欧美视频网址,女人摸下面自熨视频在线播放,婷婷色香合缴缴情av第三区

小程序中使用Echart

發(fā)布日期:2020-09-05  瀏覽:1649 

最近有幾個(gè)小程序用到了圖表,把我一頓折騰。所以來講一下使用圖表時(shí)所遇到的問題。

我們所用到的是 ECharts 的微信小程序版本 ;它提供了一個(gè)小程序原生的組件,然后我們只需要在相關(guān)頁面引用改組件就好了。

使用前準(zhǔn)備

 

先下載 ecomfe/echarts-for-weixin 中 ec-canvas 整個(gè)文件夾里面的文件

 

 

引用:然后在你的頁面中 json文件中 引用。當(dāng)然你也可以作為全局組件寫在app.json 中。

 

{

  "usingComponents": {

     "ec-canvas": "../../components/ec-canvas/ec-canvas"

    }

}

復(fù)制代碼

注意:上面的 ec-canvas 引用組件名不能隨意改變,因?yàn)樵诜庋b的組件 ec-canvas.js 中,需要找到 該節(jié)點(diǎn) 。

使用

我們要手動(dòng)給 我們的圖表設(shè)置寬高,不然頁面只會(huì)顯示空白。也就是給.container 設(shè)置寬高。

<view>

  <ec-canvas

   id="mychart-dom-bar"

   canvas-id="mychart-bar"

   ec="{{ ec }}">

  </ec- canvas>

</view>

復(fù)制代碼

其中 ec 是一個(gè)我們?cè)?我們頁面 中定義的對(duì)象,它使得圖表能夠在頁面加載后被初始化并設(shè)置。初始化圖表的方法如下:

function initChart(canvas, width, height, dpr) {

  const chart = echarts.init(canvas, null, {

    width: width,

    height: height,

    devicePixelRatio: dpr // 像素

   });

  canvas.setChart(chart);

   // 圖表數(shù)據(jù)初始化

var option = {

       ...

   };

   chart.setOption(option);

     return chart;

 }

復(fù)制代碼

這對(duì)于所有 ECharts 圖表都是通用的,用戶只需要修改上面 option 的內(nèi)容,即可改變圖表。 option 的使用方法參見 ECharts 配置項(xiàng)文檔 。對(duì)于不熟悉 ECharts 的用戶,可以參見 [5 分鐘上手 ECharts]( echarts.baidu.com/tutorial.ht… 分鐘上手 ECharts) 教程。

因?yàn)槲覀円话愣际切枰舆t加載的, 也就是獲取數(shù)據(jù)后才加載圖表的,所以我們不能直接使用,

我們需要在獲取數(shù)據(jù)重新設(shè)置 options 之后才能使用。

代碼入下:

**.wxml 文件 **

<view>

  <view>全國(guó)疫情新趨勢(shì)</view>

  <ec-canvas

    wx:if="{{hasGetOption}}"

    class="map-chart"   

    id="map-chart"

    canvas-id="map-chart"

    ec="{{ ec }}">

   </ec-canvas>

</view>

復(fù)制代碼

.js 文件

// 頁面中需要引入 ec-canvas 文件夾中的 echcrts.js

import * as echarts from '../../components/ec-canvas/echarts';  

page({

  data: {

    hasGetOption: false,

    ec: {

      // 當(dāng)我們?cè)O(shè)置lazyLoad 為true 的時(shí)候,我們需要手動(dòng)初始化圖表。

      lazyLoad: true,

    }

  },

  ready() {

    // 在ready 的時(shí)候獲取組件的實(shí)例。否則可能獲取不到。

    this.echartInstance = this.selectComponent('.map-chart');

},

setOption () {

  let option = {

     title: {

        // text: '全國(guó)疫情新增趨勢(shì)'

     },

     tooltip: {

       trigger: 'axis'

     },

     legend: {

       data: [ '確診']

      },

     grid: {

       left: '3%',

       right: '4%',

       bottom: '3%',

       containLabel: true

     },

     xAxis: {

       type: 'category',

       boundaryGap: false,

       data: []

     },

     yAxis: {

       type: 'value'

     },

     series: [{

       name: '確診',

       type: 'line',

       stack: '總量',

       data: [120, 132, 101, 134, 90, 230, 210],

       smooth: true

      }

      ]

    }

  },

initChart(canvas, width, height, dpr) {

  const chart = echarts.init(canvas, null, {

    width: width,

    height: height,

    devicePixelRatio: dpr // new

  });

   canvas.setChart(chart);

   let option = this.getOption();

   chart.setOption(option);

   return chart;

  },

getPageData() {

   wx.request({

  ...

     success: (res) => {

        // 獲取到數(shù)據(jù)后再手動(dòng)初始化

      this.echartInstance.init(this.initChart);

       this.setData({

         hasGetOption: true,

          ...

        })

      }

    })

  }

})

復(fù)制代碼

在之前的版本中會(huì)出現(xiàn)這么一個(gè)問題:

 

 

因?yàn)樽钚禄A(chǔ)庫版本中 支持 Canvas 2d,這個(gè)可以提升渲染性能,解決非同層渲染問題。

解決這個(gè)問題只需要在 ec-cnavas.js 的data 中將 isUseNewCanvas 設(shè)為true即可。

Taro 中使用

因?yàn)?/span> Taro 中可以使用 微信中的原生組件,以及微信中的自定義組件。 所以使用方法同微信小程序類似。

 

下載

 

 

頁面引用

 

config = {

  navigationBarTitleText: '首頁',

  usingComponents: {

     "ec-canvas": "../../components/ec-canvas/ec-canvas"

  }

}

復(fù)制代碼

使用:

state = {

  ec: {

    lazyLoad: true,

  }

};

// 獲取組件實(shí)例。

setCanvasRef = node => this.canvasRef = node;

render () {

  return (

    <View className="line-chart">

       <ec-canvas

         id="price-chart"

         canvas-id="price-chart"

         ref={this.setCanvasRef}

         ec={ec} />

   </View>)

}

復(fù)制代碼

然后在數(shù)據(jù)請(qǐng)求完后 再圖表初始化。 init 是再組件中定義的

this.canvasRef.init (this.initChart);   

復(fù)制代碼