ECharts 是一個由百度開源的強大的數據可視化庫,廣泛應用于各種數據展示場景。結合 React 和 TypeScript,我們可以構建出類型安全、可維護性高的數據可視化應用。本文將詳細介紹如何在 React + TypeScript 項目中使用 ECharts。
在開始之前,確保你已經安裝了 Node.js 和 npm(或 yarn)。接下來,我們需要創建一個新的 React 項目,并安裝必要的依賴。
使用 create-react-app
創建一個新的 React 項目:
npx create-react-app my-echarts-app --template typescript
進入項目目錄:
cd my-echarts-app
安裝 ECharts 和相關的 TypeScript 類型定義:
npm install echarts
npm install @types/echarts --save-dev
首先,在 src
目錄下創建一個新的組件 EChartsComponent.tsx
:
import React, { useEffect, useRef } from 'react';
import * as echarts from 'echarts';
const EChartsComponent: React.FC = () => {
const chartRef = useRef<HTMLDivElement>(null);
useEffect(() => {
if (chartRef.current) {
const myChart = echarts.init(chartRef.current);
const option = {
title: {
text: 'ECharts 入門示例'
},
tooltip: {},
xAxis: {
data: ['襯衫', '羊毛衫', '雪紡衫', '褲子', '高跟鞋', '襪子']
},
yAxis: {},
series: [
{
name: '銷量',
type: 'bar',
data: [5, 20, 36, 10, 10, 20]
}
]
};
myChart.setOption(option);
}
}, []);
return <div ref={chartRef} style={{ width: '100%', height: '400px' }}></div>;
};
export default EChartsComponent;
在 App.tsx
中引入并使用 EChartsComponent
:
import React from 'react';
import './App.css';
import EChartsComponent from './EChartsComponent';
const App: React.FC = () => {
return (
<div className="App">
<header className="App-header">
<h1>React + TypeScript + ECharts</h1>
<EChartsComponent />
</header>
</div>
);
};
export default App;
啟動項目:
npm start
打開瀏覽器,訪問 http://localhost:3000
,你應該會看到一個簡單的柱狀圖。
在實際應用中,圖表的數據通常是動態變化的。我們可以通過 React 的狀態管理來實現數據的動態更新。
修改 EChartsComponent.tsx
,使其能夠接收外部數據并動態更新圖表:
import React, { useEffect, useRef } from 'react';
import * as echarts from 'echarts';
interface EChartsComponentProps {
data: number[];
}
const EChartsComponent: React.FC<EChartsComponentProps> = ({ data }) => {
const chartRef = useRef<HTMLDivElement>(null);
useEffect(() => {
if (chartRef.current) {
const myChart = echarts.init(chartRef.current);
const option = {
title: {
text: 'ECharts 動態數據示例'
},
tooltip: {},
xAxis: {
data: ['襯衫', '羊毛衫', '雪紡衫', '褲子', '高跟鞋', '襪子']
},
yAxis: {},
series: [
{
name: '銷量',
type: 'bar',
data: data
}
]
};
myChart.setOption(option);
}
}, [data]);
return <div ref={chartRef} style={{ width: '100%', height: '400px' }}></div>;
};
export default EChartsComponent;
在 App.tsx
中,添加狀態管理來動態更新數據:
import React, { useState, useEffect } from 'react';
import './App.css';
import EChartsComponent from './EChartsComponent';
const App: React.FC = () => {
const [data, setData] = useState<number[]>([5, 20, 36, 10, 10, 20]);
useEffect(() => {
const interval = setInterval(() => {
setData(prevData => prevData.map(value => value + Math.floor(Math.random() * 10)));
}, 2000);
return () => clearInterval(interval);
}, []);
return (
<div className="App">
<header className="App-header">
<h1>React + TypeScript + ECharts</h1>
<EChartsComponent data={data} />
</header>
</div>
);
};
export default App;
ECharts 提供了多種內置主題,我們可以通過 echarts.init
的第二個參數來指定主題。
首先,安裝 ECharts 的主題包:
npm install echarts-theme
在 EChartsComponent.tsx
中,引入并使用主題:
import React, { useEffect, useRef } from 'react';
import * as echarts from 'echarts';
import 'echarts-theme/macarons';
const EChartsComponent: React.FC = () => {
const chartRef = useRef<HTMLDivElement>(null);
useEffect(() => {
if (chartRef.current) {
const myChart = echarts.init(chartRef.current, 'macarons');
const option = {
title: {
text: 'ECharts 主題示例'
},
tooltip: {},
xAxis: {
data: ['襯衫', '羊毛衫', '雪紡衫', '褲子', '高跟鞋', '襪子']
},
yAxis: {},
series: [
{
name: '銷量',
type: 'bar',
data: [5, 20, 36, 10, 10, 20]
}
]
};
myChart.setOption(option);
}
}, []);
return <div ref={chartRef} style={{ width: '100%', height: '400px' }}></div>;
};
export default EChartsComponent;
當窗口大小變化時,ECharts 圖表可能需要重新調整大小。我們可以通過監聽 resize
事件來實現這一點。
在 EChartsComponent.tsx
中,添加窗口大小變化的監聽:
import React, { useEffect, useRef } from 'react';
import * as echarts from 'echarts';
const EChartsComponent: React.FC = () => {
const chartRef = useRef<HTMLDivElement>(null);
useEffect(() => {
if (chartRef.current) {
const myChart = echarts.init(chartRef.current);
const option = {
title: {
text: 'ECharts 窗口大小變化示例'
},
tooltip: {},
xAxis: {
data: ['襯衫', '羊毛衫', '雪紡衫', '褲子', '高跟鞋', '襪子']
},
yAxis: {},
series: [
{
name: '銷量',
type: 'bar',
data: [5, 20, 36, 10, 10, 20]
}
]
};
myChart.setOption(option);
const handleResize = () => {
myChart.resize();
};
window.addEventListener('resize', handleResize);
return () => {
window.removeEventListener('resize', handleResize);
};
}
}, []);
return <div ref={chartRef} style={{ width: '100%', height: '400px' }}></div>;
};
export default EChartsComponent;
通過本文的介紹,你應該已經掌握了如何在 React + TypeScript 項目中使用 ECharts。我們從基本的使用開始,逐步介紹了動態數據更新、主題應用以及窗口大小變化的處理。ECharts 提供了豐富的配置項和強大的功能,結合 React 和 TypeScript,你可以構建出高效、可維護的數據可視化應用。
希望本文對你有所幫助,祝你在數據可視化的道路上越走越遠!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。