【问题标题】:map is not a function in reactJSmap 不是 reactJS 中的函数
【发布时间】:2020-12-02 09:08:31
【问题描述】:

当我执行 console.log(response.data) 时,它返回了 2 个数据集,即 post 和 user:

 const [dbdata,setDBData] = useState([])

useEffect(async() => {
        const response = await Axios.get('http://localhost:5000/api/posts/allpost', {withCredentials:true})
    setDBData(response.data)
    console.log(response.data)
    }, [])


{post: Array(2), user: Array(1)}
post: (2) [{…}, {…}]
user: [{…}]

所以当我尝试 dbdata.post.map() 时,它说 map() 不是函数。我在这里缺少什么?非常感谢并非常感谢。

【问题讨论】:

  • 我猜测服务器上的数据是空的。检查response.data 上的console.log。
  • 有数据。 {post:数组(2),用户:数组(1)}
  • 请发布最小代码以供人们帮助。从 sn-p 我们不确定是哪一个引发了错误。 dbdata.post.map() 不在您共享的代码中。
  • 这样定义你的状态 - const [dbdata,setDBData] = useState({post: [], user: []})
  • 谢谢。那么我该如何解决呢?很抱歉我仍然没有体验很多场景。

标签: reactjs


【解决方案1】:

问题

初始状态为空数组[]

const [dbdata,setDBData] = useState([]);

所以dbdata.post 和/或dbdata.user 如果您尝试在初始渲染上渲染和映射它们,它们都是未定义的。

dbdata.post.map(...) // <-- throws error since dbdata.post undefined

解决方案

提供正确的初始状态,以便初始渲染具有可访问和映射的有效状态。

const [dbdata,setDBData] = useState({ post: [], user: [] });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-13
    • 2020-02-14
    • 2023-03-08
    • 2019-03-30
    • 1970-01-01
    • 2021-01-24
    相关资源
    最近更新 更多