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

React中如何调用API获取数据并计算指定周期内的增长率

实现代码

import { useState, useEffect } from 'react';
// 保留你原有其他引入,例如图标组件、Wrapper、BorderLinearProgress等

function Card() {
  // 存储当前新增注册人数
  const [newEnrollments, setNewEnrollments] = useState(0);
  // 存储90天前的新增注册人数,用于计算增长率
  const [prevEnrollments, setPrevEnrollments] = useState(0);
  // 存储计算后的90天增长率
  const [growthRate, setGrowthRate] = useState(0);

  const getNewEnrollments = async () => {
    try {
      // 替换为实际的API请求逻辑
      const res = await fetch('/api/enrollment-stats');
      const data = await res.json();
      // 示例API返回格式可调整为同时返回当前与90天前的新增数据,若API直接返回增长率可跳过计算步骤
      // 示例返回值:{ "current_new": 12248, "prev_90d_new": 6446 }
      const currentVal = data.current_new || 0;
      const prevVal = data.prev_90d_new || 0;
      
      setNewEnrollments(currentVal);
      setPrevEnrollments(prevVal);
      
      // 增长率计算,增加除以0的容错处理
      if (prevVal > 0) {
        const calculatedRate = ((currentVal - prevVal) / prevVal * 100).toFixed(1);
        setGrowthRate(Number(calculatedRate));
      } else {
        // 90天前无数据时的默认值,可根据业务需求调整
        setGrowthRate(100);
      }
    } catch (err) {
      console.error('注册数据获取失败:', err);
    }
  };

  useEffect(() => {
    getNewEnrollments();   
  }, []);

  return (
    <Wrapper>
      <div className="card1">
        <div className="user">
          <HowToRegRoundedIcon className="icon" />
        </div>
        <div className="card-info">
          <h3>新增注册人数</h3>
          <h4>{newEnrollments}</h4>
          <p>
            <BorderLinearProgress variant="determinate" value={Math.min(growthRate, 100)} />
            <span>{growthRate}%,90天同比增长</span>
          </p>
        </div>
      </div>
    </Wrapper>
  );
}

注意事项

  • 如果API已经直接返回计算完成的90天增长率,可以删除手动计算逻辑,直接将接口返回的增长率赋值给growthRate即可
  • 进度条的value加了最大值100的限制,避免增长率超过100%时进度条显示异常,若业务需要展示超过100%的进度,可删除Math.min限制
  • 增加了接口请求异常捕获和空值兼容,避免接口报错或数据异常导致页面崩溃

内容的提问来源于stack exchange,提问作者Tony

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 21:57:03