Skip to content

基础使用

本指南将介绍 TaroViz 的基本使用方法,包括组件的基本属性、配置项、事件处理等。

基本组件使用

引入组件

首先,您需要在项目中引入 TaroViz 组件:

typescript
import React from 'react';
import { LineChart } from '@agions/taroviz';

基本用法

typescript
const App = () => {
  // ECharts 配置项
  const option = {
    title: {
      text: '折线图示例'
    },
    xAxis: {
      type: 'category',
      data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
    },
    yAxis: {
      type: 'value'
    },
    series: [
      {
        data: [120, 200, 150, 80, 70, 110, 130],
        type: 'line'
      }
    ]
  };

  return (
    <LineChart
      chartId="chart-1"
      option={option}
      width="100%"
      height={400}
    />
  );
};

export default App;

组件属性

核心属性

属性名类型描述默认值
chartIdstring图表唯一标识符,用于区分多个图表实例-
optionobjectECharts 配置项,用于定义图表的外观和行为-
widthstring | number图表宽度'100%'
heightstring | number图表高度400
themestring | object图表主题,可以是内置主题名称或自定义主题对象'default'
autoResizeboolean是否自动调整大小,适应容器变化false
renderer'canvas' | 'svg'渲染器类型'canvas'

事件属性

TaroViz 支持 ECharts 的各种事件,您可以通过以下属性监听事件:

属性名类型描述
onClickfunction点击事件
onDblClickfunction双击事件
onMouseDownfunction鼠标按下事件
onMouseMovefunction鼠标移动事件
onMouseUpfunction鼠标释放事件
onMouseOverfunction鼠标悬停事件
onMouseOutfunction鼠标离开事件
onDataZoomfunction数据缩放事件
onDataRangefunction数据范围事件
onLegendSelectChangedfunction图例选择变化事件
onLegendSelectedfunction图例选中事件
onLegendUnselectedfunction图例取消选中事件
onSeriesTogglefunction系列切换事件

配置项

TaroViz 使用 ECharts 的配置项来定义图表的外观和行为。您可以通过 option 属性传递 ECharts 配置项。

基本配置项结构

typescript
const option = {
  // 标题
  title: {
    text: '图表标题',
  },
  // 提示框
  tooltip: {
    trigger: 'axis',
  },
  // 图例
  legend: {
    data: ['系列1', '系列2'],
  },
  // X轴
  xAxis: {
    type: 'category',
    data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
  },
  // Y轴
  yAxis: {
    type: 'value',
  },
  // 系列数据
  series: [
    {
      name: '系列1',
      type: 'line',
      data: [120, 200, 150, 80, 70, 110, 130],
    },
    {
      name: '系列2',
      type: 'line',
      data: [90, 150, 120, 100, 80, 130, 110],
    },
  ],
};

配置项参考

有关 ECharts 配置项的详细说明,请参考 ECharts 配置项文档

事件处理

基本事件

typescript
const handleClick = (params: any) => {
  console.log('图表被点击了', params);
};

const handleDataZoom = (params: any) => {
  console.log('图表缩放了', params);
};

return (
  <LineChart
    chartId="chart-1"
    option={option}
    width="100%"
    height={400}
    onClick={handleClick}
    onDataZoom={handleDataZoom}
  />
);

事件参数

事件处理函数会接收一个参数 params,包含了事件的详细信息:

typescript
{
  // 事件类型
  type: 'click',
  // 系列索引
  seriesIndex: 0,
  // 数据索引
  dataIndex: 1,
  // 数据值
  value: 200,
  // 系列名称
  seriesName: '系列1',
  // 数据名称
  name: 'Tue',
  // 组件类型
  componentType: 'series'
}

动态数据更新

TaroViz 支持动态更新图表数据,您只需要更新 option 属性即可:

typescript
import React, { useState } from 'react';
import { LineChart } from '@agions/taroviz';

const DynamicChart = () => {
  const [option, setOption] = useState({
    title: {
      text: '动态数据示例'
    },
    xAxis: {
      type: 'category',
      data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
    },
    yAxis: {
      type: 'value'
    },
    series: [
      {
        data: [120, 200, 150, 80, 70, 110, 130],
        type: 'line'
      }
    ]
  });

  const updateData = () => {
    // 生成随机数据
    const newData = Array.from({ length: 7 }, () => Math.floor(Math.random() * 200) + 50);

    setOption(prev => ({
      ...prev,
      series: [
        {
          ...prev.series[0],
          data: newData
        }
      ]
    }));
  };

  return (
    <>
      <LineChart
        chartId="dynamic-chart"
        option={option}
        width="100%"
        height={400}
        autoResize={true}
      />
      <button onClick={updateData}>更新数据</button>
    </>
  );
};

export default DynamicChart;

响应式设计

自动调整大小

通过设置 autoResize 属性为 true,图表会自动适应容器大小变化:

typescript
<LineChart
  chartId="responsive-chart"
  option={option}
  width="100%"
  height={400}
  autoResize={true}
/>

手动调整大小

您也可以通过 ref 获取图表实例,手动调用 resize() 方法调整大小:

typescript
import React, { useRef } from 'react';
import { LineChart, ChartRef } from '@agions/taroviz';

const ResponsiveChart = () => {
  const chartRef = useRef<ChartRef>(null);

  const handleResize = () => {
    if (chartRef.current) {
      chartRef.current.resize();
    }
  };

  return (
    <>
      <LineChart
        ref={chartRef}
        chartId="manual-resize-chart"
        option={option}
        width="100%"
        height={400}
      />
      <button onClick={handleResize}>手动调整大小</button>
    </>
  );
};

export default ResponsiveChart;

下一步

继续阅读 图表类型 指南,了解 TaroViz 支持的图表类型。

Released under the MIT License.