我创建了以下reactComponent。据我了解useState([]);应该将注释变量设置为数组。但事实并非如此。我得到了一个例子,尝试在对象上运行.map()。我要做的是使它工作的Object.values(comments)但我不明白为什么。我的api明确返回了一个注释对象数组。
import React, { useState, useEffect } from 'react';
import axios from 'axios';
export default ({ postId }) => {
const [comments, setComments] = useState([]);
const fetchData = async () => {
const res = await axios.get(
`http://localhost:4001/posts/${postId}/comments`
);
setComments(res.data);
};
useEffect(() => {
fetchData();
}, []);
const renderedComments = comments.map(comment => {
return <li key={comment.id}>{comment.content}</li>;
});
return <ul>{renderedComments}</ul>;
};
答案 0 :(得分:1)
据我所知,您对状态的使用是正确的,Object.values
对传递给您的数据有效,这意味着您运行{{1}时,它肯定是对象还是数组}作为您的故障排除过程的一部分?
正如上面的评论者所述,最可能的情况是您正在从后端找回对象。您可以做的其他一些事情来确认错误地返回给您的数据,就是简单地注释掉您的Array.isArray(res.data)
并查看它是否仍然抛出相同的异常。