【发布时间】:2021-04-07 09:44:14
【问题描述】:
我是新手。我收到此错误 products.map 不是函数。我之前没有收到任何与 .map 函数相关的错误,但今天它突然出现了。有人可以帮我解决这个问题吗?
import SingleProduct from "./SingleProduct";
import axios from "axios";
import { Container, Grid, Grow } from "@material-ui/core";
const Products = () => {
const [products, setProducts] = React.useState([]);
const [loading, setLoading] = React.useState(true);
const classes = useStyles();
const getData = () => {
axios
.get("http://localhost:4000/api/products")
.then((res) => {
setProducts(res.data);
setLoading(false);
})
.catch((err) => {
console.log(err);
});
};
React.useEffect(getData, []);
return (
<div>
<Container>
<Grow in>
<Grid container spacing={6}>
{products.map((product, index) => (
<SingleProduct key={index} product={product} />
))}
</Grid>
</Grow>
</Container>
</div>
);
};
export default Products;
【问题讨论】:
-
发生这种情况是因为 products 不是数组。由于您的初始状态是一个数组,因此您的 res.data 没有返回一个数组,很可能它是一个对象。您需要检查 res.data 返回的内容
-
您可以在调用 setProducts 之前登录
res吗?也请登录products。该错误意味着您将其设置为不是数组的东西。 -
console.log(res) 给了我这个 {data: " config: {url: "localhost:4000/api/products", method : "get", headers: {…}, baseURL: "localhost:4000/api", transformRequest: Array(1), …}。类似的东西
-
console.log(products) 给我这个 。类似的东西
-
res.data似乎返回的是 HTML 文档而不是 JSON。获取时后端是否存在问题,例如某种错误?
标签: reactjs axios array.prototype.map