为什么useState()不设置默认值?

时间:2020-07-30 21:53:05

标签: javascript reactjs

我创建了以下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>;
};

1 个答案:

答案 0 :(得分:1)

据我所知,您对状态的使用是正确的,Object.values对传递给您的数据有效,这意味着您运行{{1}时,它肯定是对象还是数组}作为您的故障排除过程的一部分?

正如上面的评论者所述,最可能的情况是您正在从后端找回对象。您可以做的其他一些事情来确认错误地返回给您的数据,就是简单地注释掉您的Array.isArray(res.data)并查看它是否仍然抛出相同的异常。