Skip to Content
# 低代码图表渲染组件技术方案 封装一个 ChartRenderer 组件,用于将任何 table data 渲染为不同的 charts ## 支持的图表 - components/demo/area-chart.tsx - components/demo/bar-chart.tsx - components/demo/line-chart.tsx - components/demo/pie-chart.tsx ## 技术选型 - 图表库:Recharts(基于 React 的声明式图表库) - 类型系统:TypeScript - UI 框架:shadcn/ui ## 核心类型定义 ### 基础数据类型 ```typescript // 表格数据类型 interface TableData { [key: string]: string | number | boolean | null; } ``` ### 图表配置类型 ```typescript // 基础图表配置 interface BaseChartConfig { type: "line" | "area" | "bar" | "pie"; title?: string; } // 笛卡尔坐标系图表配置(线图、面积图、柱状图) interface CartesianChartConfig extends BaseChartConfig { type: "line" | "area" | "bar"; xAxis: { field: string; label?: string; }; series: { field: string; label?: string; color?: string; }[]; } // 饼图配置 interface PieChartConfig extends BaseChartConfig { type: "pie"; label: { field: string; }; value: { field: string; }; colors?: { color: string; name?: string; }[]; } type ChartConfig = CartesianChartConfig | PieChartConfig; ``` ### 组件接口 ```typescript interface ChartRendererProps { data: TableData[]; config: ChartConfig; width?: number; height?: number; className?: string; } ``` ## 组件结构 ``` components/ charts/ index.tsx # 主组件入口 types.ts # 类型定义 cartesian-chart.tsx # 笛卡尔坐标系图表(线图、面积图、柱状图) pie-chart.tsx # 饼图 utils.ts # 工具函数 ``` ## 使用示例 ```typescript const config: ChartConfig = { type: "line", xAxis: { field: "date", label: "日期", }, series: [ { field: "value", label: "销售额", color: "#8884d8", }, { field: "profit", label: "利润", color: "#82ca9d", }, ], }; const data = [ { date: "2024-01", value: 100, profit: 20 }, { date: "2024-02", value: 200, profit: 40 }, // ... ]; <ChartRenderer data={data} config={config} />; ```
Last updated on