【发布时间】:2021-11-19 08:15:44
【问题描述】:
我试图从 API 的数组中获取项目列表,但是当我在项目上使用地图函数时,它说地图不是函数。
import React from 'react'
import { useState } from 'react';
const axios = require('axios');
const Api = () => {
const [items, setItems] = useState([]);
const getUser = async () => {
try {
const response = await axios.get('http://localhost:5000/api/products');
console.log(response);
setItems (JSON.stringify(response));
} catch (error) {
console.error(error);
}
}
return (
<div>
<button onClick={getUser}> Fetch Data</button>
<br />
<br />
<br />
{items}
</div>
)
}
export default Api
【问题讨论】:
-
什么是
setItems?为什么使用JSON.stringfy()而不是JSON.parse()? -
axios 通常以
response.data的形式返回数据(并解析)。因此,请尝试将其添加到您的状态。并且不要对数据进行字符串化。你为什么这样做? -
你有
JSON.stringify()你的数据,这使它成为一个字符串,array#map没有在字符串上定义。您需要访问response.data并检查它是否为数组,然后使用数组函数对其进行迭代。 -
我试过 setItems(response.data);但它说 × 错误:对象作为 React 子对象无效(找到:带有键 {_id、name、price、imageUrl、__v} 的对象)。如果您打算渲染一组子项,请改用数组。
标签: javascript reactjs dictionary