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!
推薦閱讀:
- 基於vue+echarts數據可視化大屏展示的實現
- vue3+ts+echarts實現按需引入和類型界定方式
- Vue-cli3中如何引入ECharts並實現自適應
- 在vue項目中封裝echarts的步驟
- React+echarts (echarts-for-react) 實現中國地圖及省份切換功能