[英]Why is useState() not setting the default value?
我創建了以下 reactComponent。 據我了解 useState([]); 應該將 comments 變量設置為數組。 但事實並非如此。 我得到一個例外,我嘗試在 object 上運行.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>;
};
據我所知,您對 state 的使用是正確的,事實上Object.values
對返回給您的數據有效,這意味着它絕對是一個Array.isArray(res.data)
您的故障排除過程的一部分?
正如上面評論者所說,最有可能的情況是您從后端獲得了 object。 您可以做的其他事情來確認它是否有錯誤地返回給您的數據是簡單地注釋掉您的useEffect
並查看它是否仍然拋出相同的異常。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.