You need to enable JavaScript to run this app. React调用recipe.map报错提示不是函数,是什么原因?如何解决?
优惠活动
大模型
产品
解决方案
定价
更多

React调用recipe.map报错提示不是函数,是什么原因?如何解决?

问题根因

recipe.map is not a function 报错的核心原因是:你调用setRecipe赋值的res.data是对象类型,不是你预期的数组,而map是仅数组可调用的方法。
你使用的Edamam美食搜索接口返回结构为外层包裹的对象,实际需要的食谱列表存储在返回体的hits字段下,你直接将整个返回对象赋值给初始为数组的recipe变量,覆盖了其数组类型,因此调用map方法时抛出异常。

修复方案

仅需要修改setRecipe的取值逻辑,取返回体的hits字段赋值即可:

useEffect(() => {
  const fetchData = async () => {
    try {
      const res = await axios.get(url);
      // 取返回体中的hits数组赋值给recipe
      setRecipe(res.data.hits);
      console.log(res.data.hits);
    } catch (err) {
      console.error(err);
    }
  };
  fetchData();
}, []);

可选鲁棒性优化

渲染前增加数组类型判断,避免接口异常返回非数组格式时页面直接崩溃,同时补充列表渲染必填的key属性避免React告警:

return (
  <div>
    {Array.isArray(recipe) && recipe.map((r, index) => {
      return <RecipeCard key={index} recipe={r} />;
    })}
  </div>
);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 02:42:00