react+typescript中使用echarts的實現步驟

安裝echarts

npm install echarts --save

按需加載Echarts demo

echarts.init() API文檔

import * as echarts from 'echarts/core'
import {
  BarChart,
  // 系列類型的定義後綴都為 SeriesOption
  LineChart,
} from 'echarts/charts'
import {
  TitleComponent,
  // 組件類型的定義後綴都為 ComponentOption
  TooltipComponent,
  GridComponent,
  // 數據集組件
  DatasetComponent,
  // 內置數據轉換器組件 (filter, sort)
  TransformComponent,
} from 'echarts/components'
import { LabelLayout, UniversalTransition } from 'echarts/features'
import { CanvasRenderer } from 'echarts/renderers'
import { useEffect, useRef } from 'react'

// 註冊必須的組件
echarts.use([
  TitleComponent,
  TooltipComponent,
  GridComponent,
  DatasetComponent,
  TransformComponent,
  BarChart,
  LabelLayout,
  UniversalTransition,
  CanvasRenderer,
  LineChart,
])

const ECharts: React.FC = () => {
  // 1. get DOM
  const chartRef = useRef(null)

  useEffect(() => {
    // 2. 實例化表格對象
    const chart = echarts.init(chartRef.current as unknown as HTMLDivElement, undefined, {
      width: 1000,
      height: 500,
    })
    // 3. 定義數據
    const option = {
      title: {
        text: '測試圖表',
      },
      xAxis: {
        type: 'category',
        data: ['1-1', '1-2', '1-3', '1-5', '1-6', '1-7', '1-8', '1-9'],
      },
      yAxis: {
        type: 'value',
      },
      series: [
        {
          data: [140, 110, 100, 90, 70, 30, 10, 0],
          type: 'line',
        },
      ],
    }
    // 4. 調用表格數據
    chart.setOption(option)
  }, [])

  return <div className="charts" ref={chartRef} />
}

export default ECharts

錯誤記錄

實例化Echarts的時候出現:“類型“null”的參數不能賦給類型“HTMLElement”的參數”錯誤,是typescript類型檢查引起的,因此需要對該chartRef.current定義類型,可以定義成any,這裡用的是typescript的雙重斷言去定義的類型。

發生錯誤的代碼

修改後的代碼

註意:

類型斷言隻能夠「欺騙」TypeScript 編譯器,無法避免運行時的錯誤,反而濫用類型斷言可能會導致運行時錯誤 類型斷言隻會影響
TypeScript 編譯時的類型,類型斷言語句在編譯結果中會被刪除,所以它不是類型轉換,不會真的影響到變量的類型。

將圖表改為自適應容器大小 – .resize()

echarts中提供瞭resize函數能夠自動改變圖表的大小,但是需要使用window.onresize監聽窗口的變化,隻要窗口尺寸變化瞭就調用resize方法,並且圖表的寬度和高度要分別設置成百分比和vh單位,否則resize會失效。

基於上面的demo實現
多復制一個表格數據之後在調用表格數據後面加window.resize函數,有多少個表就繼續往後面加多少個resize。

 // 4. 調用表格數據
    chart.setOption(option)
    chart2.setOption(option2)
    // 5. 將圖表變為自適應
    window.onresize = () => {
      chart.resize()
      chart2.resize()
    }

到此這篇關於react+typescript中使用echarts的實現步驟的文章就介紹到這瞭,更多相關react typescript中使用echarts內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: