【发布时间】:2020-05-08 04:26:35
【问题描述】:
我对全栈很陌生,而且我正在使用 MERN,所以如果这是一个简单/愚蠢的解决方法,请原谅我(尽管我查看了几种不同类型的资源,因此没有运气)。
我似乎无法呈现我的项目数组以响应 ui。我收到 GET 请求并将其记录到控制台,所以我知道它在那里,但是当我去尝试映射它或将它放入一个具有简单函数的 div 中以迭代它或只是显示来自 JSON 文件的一些信息,我不断收到错误。这是 JSON 文件(通过了验证检查)和我正在使用的组件。
[
{
"_id": "5e1ff19d926f7c245ce01d7c",
"foodmenu": [
{
"food": "burger",
"orders": 0
},
{
"food": "fish",
"orders": 0
},
{
"food": "salad",
"orders": 0
},
{
"food": "curry",
"orders": 0
},
{
"food": "sushi",
"orders": 0
},
{
"food": "egg rolls",
"orders": 0
},
{
"food": "Jacket potatoe",
"orders": 0
},
{
"food": "hash browns",
"orders": 0
},
{
"food": "mash potatoe",
"orders": 0
},
{
"food": "pizza",
"orders": 0
},
{
"food": "sandwhich",
"orders": 0
},
{
"food": "omlete",
"orders": 0
}
]
}
]
import React, { Fragment, useState, useEffect } from "react";
import axios from "axios";
function Orders() {
const [data, setData] = useState([]);
useEffect(() => {
const fetchData = async () => {
const result = await axios("api/orders/foodmenu/foodtypes");
setData(result.data);
console.log(result.data);
};
fetchData();
}, []);
return (
<div>
{data[0].foodmenu.map(data => (
<div key={data._id}>{data.foodmenu}</div>
))}
</div>
)
};
export default Orders;
我收到如下类型错误:
TypeError: Cannot read property 'foodmenu' of undefined
&
TypeError: Cannot read property 'map' of undefined
感谢您的帮助。
【问题讨论】:
-
好吧,当您说“错误”时,请具体说明该消息是什么,如果相关,它会出现在哪一行。您还覆盖了
data变量,这只是令人困惑并且必然会导致问题。目前它指的是状态中的数据,和地图函数中的每个项目。给它们命名不同的东西。另外,我认为在您的地图函数中,您希望返回一个带有映射项值的 div,而不是状态数据值,例如.map(item => <div key={item.food}>FOOD: {item.food}, ORDERS: {item.orders}</div>) -
我已经指定了错误......并且它在返回块中是具体的。
标签: reactjs api user-interface axios use-effect