javascript - 试图映射到React

标签 javascript reactjs error-handling fetch

我添加了营养文件

const Nutrition = () => {




  return(
      <div>
        <p>Label</p>
        <p>Quantity</p>
        <p>Unit</p>
      </div>
  )



}
    



export default Nutrition


我正在尝试在React中映射某些内容,但我得到的错误映射不起作用。我正在尝试获取一个Api,现在我正在尝试将另一个组件映射到它,但是错误仍然存​​在。有人可以帮我还是给我提示

const ApiNutrition = () => {




const [nutritions, setNutritions] = useState([])

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

const getNutritions = async () => {

    const response = await fetch(`https://api.edamam.com/api/nutrition-data?app_id=${API_ID}&app_key=${API_KEY}&ingr=1%20large%20apple`)
    
    const data = await response.json();
    setNutritions(data.totalNutrientsKCal)
    console.log(data.totalNutrientsKCal);
 
}


    return(

        <div>

            <form className="container text-center">
                <input classname="form-control" type="text" placeholder="CALORIES"/>
                <button classname="form-control" type="submit">Submit</button>
            </form>

           {nutritions.map(nutrition => (
              <Nutrition />

           ))}
            
        </div>
    )
}

export default ApiNutrition

最佳答案

从您的代码中,我可以看到您在两个地方设置nutritions的值。一种是在使用useState()进行定义时,另一种是在使用setNutritions进行API调用之后。

您得到的错误是map is not a function,这意味着nutritions的类型不是数组。

在使用useState进行定义时,您将[]提供为默认值,因此这意味着该API出错,您从API获得的响应(传递给setNutritions的响应)不是数组。

您可以通过typeof data.totalNutrientsKCal中的console.log调试API响应类型

关于javascript - 试图映射到React,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61933103/

相关文章:

javascript - 参数是变量还是常量?

javascript - Reactjs 管理有状态的子进程

reactjs - 在Spring Security中向/oauth/token发送请求的安全方式是什么?

javascript - React-query 返回无法读取未定义的属性,即使我可以看到 id 已设置

asp.net - 正在部署网站: 500 - Internal server error

haskell - 从 hGetContents 检测惰性字符串中的 I/O 异常?

linux - 将 stderr 重定向到错误处理程序

javascript - three.js中解析json几何数据

javascript - 回调函数中的 React 组件未调用且未抛出任何错误

javascript - jQuery 导航 - 需要定位和 Accordion 行为方面的帮助