chart.tsx 1.6 KB
import { Card } from "antd";
import * as echarts from "echarts/core";
import { GridComponent, GridComponentOption } from "echarts/components";
import { BarChart, BarSeriesOption } from "echarts/charts";
import { CanvasRenderer } from "echarts/renderers";
import { useRef, useState } from "react";
const tabList = [
  {
    key: "bar",
    label: "柱状图",
  },
  {
    key: "pie",
    label: "饼图",
  },
  {
    key: "line",
    label: "折线图",
  },
];

echarts.use([GridComponent, BarChart, CanvasRenderer]);
type EChartsOption = echarts.ComposeOption<
  GridComponentOption | BarSeriesOption
>;

var option: EChartsOption;

option = {
  xAxis: {
    type: "category",
    data: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],
  },
  yAxis: {
    type: "value",
  },
  series: [
    {
      data: [120, 200, 150, 80, 70, 110, 130],
      type: "bar",
    },
  ],
};
export function ChartComponent() {
  const [activeTabKey, setActiveTabKey] = useState<string>("bar");
  const line = useRef<HTMLCanvasElement>(null);
  const bar = useRef<HTMLCanvasElement>(null);
  const pie = useRef<HTMLCanvasElement>(null);
  const contentListNoTitle: Record<string, React.ReactNode> = {
    bar: <canvas ref={bar}></canvas>,
    pie: <canvas ref={pie}></canvas>,
    line: <canvas ref={line}></canvas>,
  };
  // var myChart = echarts.init(bar);
  return (
    <>
      <Card
        style={{ width: "100%" }}
        tabList={tabList}
        activeTabKey={activeTabKey}
        onTabChange={setActiveTabKey}
        tabProps={{ size: "middle" }}
      >
        {contentListNoTitle[activeTabKey]}
      </Card>
    </>
  );
}