为什么 useState() 没有设置默认值?
2020-07-30
108
我创建了以下 reactComponent。据我所知,useState([]); 应该将 comments 变量设置为数组。但事实并非如此。我尝试在对象上运行 .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>;
};
1个回答
据我所知,您对状态的使用是正确的,
Object.values
处理返回给您的数据这一事实意味着它肯定是一个对象或一个数组,您是否在故障排除过程中运行过
Array.isArray(res.data)
?
正如上面的评论者所说,最可能的情况是您从后端返回了一个对象。您可以做的其他事情来确认返回给您的数据有问题,只需注释掉您的
useEffect
并查看它是否仍会引发相同的异常。
Cory Harper
2020-07-30