javascript - TypeError:products.map 不是函数 - React JS
问题描述
因此,TypeError: products.map is not a function
当我尝试循环或映射当前处于我状态的对象时出现错误,我从 API 获取产品并将它们放入我的状态并尝试在我的状态下显示对象。
HomeScreen.js
import React, {useState} from 'react'
import { Card } from 'react-bootstrap'
function HomeScreen() {
const [products, setProducts] = useState([])
const requestMetadata = {
mode: 'no-cors',
method:'GET',
headers: {
'Content-Type': 'application/json'
}
};
fetch('http://localhost:8000/api/products/', requestMetadata).then(product => setProducts({product}))
return (
<div>
{products.map(product => (
<Card className="my-3 p-3 rounded">
<Card.Img src={product.image} />
<Card.Body>
<Card.Title as="div">
<strong>{product.name}</strong>
</Card.Title>
<Card.Text as="div">
</Card.Text>
<Card.Text as="h3">
${product.price}
</Card.Text>
</Card.Body>
</Card>
))}
</div>
)
}
export default HomeScreen
解决方案
如果您要获取数组列表,然后将其设置为数组对象。那么问题出在你的这一行fetch('http://localhost:8000/api/products/', requestMetadata).then(product => setProducts({product}))
详细问题在于:setProducts({product})
您必须使用 Array 来使用map 方法。
像这样更新它: fetch('http://localhost:8000/api/products/', requestMetadata).then(product => setProducts(product || []))
改变的只是这个:setProducts(product || [])
推荐阅读
- asp.net - 找不到 ABCpdf 许可证
- python - Keras 模型索引错误
- java - 如何生成反应应用程序的war文件以与spring boot一起打包?
- flutter - 颤振问题:类型'Null'不是'DateTime'的子类型
- python - 为什么 pandas concat 在其类型和形状正确时给了我不真实的数据框
- performance - 相同的 API 获得不同的响应时间
- java - 在构建时从 Spring Rest 项目创建 OpenApi 3 文档
- r - Transform lapply to foreach with %doPar%
- r - 与 ggplot2 的样本比较
- c - 如何进行按位移位