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

React使用Recharts绘制折线图无数据显示问题求助

Recharts折线图无法显示的问题修复

问题根源

  • dataKey配置错误:你给Line组件传了graphData.x、给XAxis传了graphData.y,但graphData是数组,每个数据项的键是x和y,应该传入对应的字符串键名。
  • useEffect无限循环:未设置依赖数组,导致组件每次渲染都调用createMockData,state反复更新干扰图表渲染。

修正后的代码

数据生成部分

const [graphData, setGraphData] = useState([]);

const createMockData = () => {
  let data = [];
  let value = 50;
  const baseDate = new Date();
  baseDate.setHours(0, 0, 0, 0);
  // 基于当前日期往前推,避免日期溢出
  baseDate.setDate(baseDate.getDate() - 5);
  
  for (let i = 0; i <= 5; i++) {
    let date = new Date(baseDate);
    date.setDate(baseDate.getDate() + i);
    value += Math.round((Math.random() < 0.5 ? 1 : 0) * Math.random() * 10);
    data.push({ x: date, y: value });
  }
  setGraphData(data);
};

useEffect(() => {
  createMockData();
}, []); // 空依赖数组,仅组件挂载时执行一次

折线图渲染部分

<LineChart width={500} height={200} data={graphData}>
  <Line type="monotone" dataKey="y" stroke="var(--mainColor)" />
  <XAxis dataKey="x" tickFormatter={(date) => new Date(date).toLocaleDateString()} />
  <Tooltip formatter={(value) => [value, '数值']} />
</LineChart>

额外优化说明

  • XAxis添加tickFormatter,将日期对象格式化为可读字符串;
  • 调整日期生成逻辑,避免当月天数不足时的日期溢出问题;
  • 空依赖数组确保数据仅生成一次,若需定时更新可添加对应依赖项。

内容的提问来源于stack exchange,提问作者João Silva

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 00:56:01