You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用React Chart实现周、月、年度报表的下拉切换展示

React 实现周/月/年维度报表切换

目标效果示意图

实现逻辑非常直接,核心是通过React受控组件记录用户选中的时间维度,根据维度匹配对应数据集,传入图表组件完成渲染,具体步骤如下:

  • 整理数据源
    先把存储在JSON里的报表数据按维度整理,推荐直接按周、月、年三个维度拆分存储,减少前端计算量,示例结构如下:
// data.json
{
  "week": [
    {"label": "周一", "value": 120},
    {"label": "周二", "value": 200},
    {"label": "周三", "value": 150},
    {"label": "周四", "value": 80},
    {"label": "周五", "value": 270},
    {"label": "周六", "value": 320},
    {"label": "周日", "value": 190}
  ],
  "month": [
    {"label": "1月", "value": 1200},
    {"label": "2月", "value": 1900},
    {"label": "3月", "value": 1500},
    {"label": "4月", "value": 2100},
    {"label": "5月", "value": 2400},
    {"label": "6月", "value": 1800}
  ],
  "year": [
    {"label": "2021年", "value": 12000},
    {"label": "2022年", "value": 19000},
    {"label": "2023年", "value": 25000},
    {"label": "2024年", "value": 32000}
  ]
}
  • 编写受控选择器+数据联动逻辑
    用useState存储当前选中的时间维度,监听维度变化更新要渲染的图表数据,代码示例:
import { useState, useEffect } from 'react'
import reportData from './data.json'
// 替换为你实际使用的图表组件,比如echarts-for-react、recharts等均可
import LineChart from './LineChart'

export default function DataReport() {
  // 默认选中周维度
  const [selectedRange, setSelectedRange] = useState('week')
  const [chartData, setChartData] = useState([])

  // 选中维度变更时,同步更新图表数据
  useEffect(() => {
    setChartData(reportData[selectedRange])
  }, [selectedRange])

  return (
    <div className="report-page">
      <div className="select-bar">
        <select
          value={selectedRange}
          onChange={(e) => setSelectedRange(e.target.value)}
        >
          <option value="week">周</option>
          <option value="month">月</option>
          <option value="year">年</option>
        </select>
      </div>
      <div className="chart-area">
        <LineChart data={chartData} />
      </div>
    </div>
  )
}
  • 适配图表组件
    把拿到的chartData按照你所用图表库要求的格式传入即可,切换下拉选项时数据会自动更新,图表会触发重渲染展示对应维度的报表。

如果你的JSON存的是全量明细数据,没有提前按维度拆分,只需要在上面的useEffect里加对应的数据聚合逻辑:选周时按近7天/自然周分组统计,选月时按自然月分组,选年时按年份分组,处理完成后再赋值给chartData即可。

内容的提问来源于stack exchange,提问作者Md Borhan Uddin Ashik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.01 20:01:06