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

React中使用Axios获取数据后调用.map()报TypeError问题求助

解决思路

核心问题:API返回数据结构不符

你调用的https://yields.llama.fi/pools接口返回的不是直接的数组,而是一个包含data字段的对象,结构大致如下:

{
  data: [/* 池子数组数据 */],
  // 其他额外字段
}

你直接将res.data赋值给pools,导致pools从初始的数组变成了对象,自然无法调用map方法。

修复步骤

1. 修正数据赋值

将setPools(res.data)改为setPools(res.data.data),确保pools始终是数组类型:

useEffect(() => {
    axios.get('https://yields.llama.fi/pools')
      .then(res => {
        console.log(res.data.data) // 这里才是真正的池子数组
        setPools(res.data.data)
      })
      .catch(err => {
        console.log(err)
      })
  }, []);

2. 增加渲染时的安全校验

为了避免请求未完成或数据异常时的错误,可在渲染时先判断pools是否为数组:

return (
    <>
      <ul>
        {Array.isArray(pools) && pools.map(element=>
          <li
            key={`${element.chain}-${element.project}`} // 避免同一链下多个项目的key重复
          >
            {element.project}
          </li>
        )}
      </ul>
    </>
  )

3. 优化key的唯一性

你之前用element.chain作为key,但如果同一链下有多个不同项目,会出现重复key的警告,建议结合chain和project(或接口返回的唯一标识如poolId)生成唯一key。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 10:45:34