【问题标题】:React js map is not a functionReact js map 不是函数
【发布时间】:2020-03-25 21:59:01
【问题描述】:

您好,我有以下称为项目列表的组件

const ProjectList = ({projects}) =>{ 
    console.log({projects})
    return(
        <div>
                <h1>Nothing to do</h1>
        </div>
    )
}
export default ProjectList;

道具 {projects} 收到这个:

当我尝试映射对象时,我收到一条名为“projects.map 不是函数”的错误消息

const ProjectList = ({projects}) =>{ 
    console.log({projects})
    return(
        <div>
         {projects && projects.map (project => { 
            return (
                <ProjectSummary project={project} key={project.id}></ProjectSummary>
                )
            })}
        </div>
    )
}

尝试调试,{projects} 对象现在是空的:

【问题讨论】:

  • 您从哪里获得对象项目?如果你只在它工作的地方控制台日志代码会发生什么,它是 console.log 两次,一次是值,另一次是空的?
  • 似乎您的项目是一个具有“项目”类型数组的对象。您需要调用 project.project.map() 或更好地重构您的 prop 值以避免混淆。

标签: reactjs firebase redux


【解决方案1】:

一个好的开始是尝试记录Array.isArray(projects),它显示在您的第二个屏幕截图中,项目正在作为对象返回。如您所知,.map 是一个 Array 原型。

要迭代对象中的键:值对,您可以尝试(类似):

const projectKeys = Object.keys(projects)
projectKeys.map(key => { return projects[key] });

【讨论】:

  • 谢谢,但我还是不明白:我很抱歉我是个新手,甚至让我感到惊讶,尽管我仍然做不到,但我已经走了多远;我不知道如何向您解释我的问题,也不知道在哪里可以详细解释;你介意你能不能继续帮我做这件事?
  • 看起来您的项目参数返回:``` 项目:{ 项目:[] } ``` 你可能想尝试迭代项目.projects。希望这有助于听起来您的数组存在于 projects.projects
  • 别着急,我最后会想出来的;我正在从 firestore 检索数据,我有 3 个 promise,前两个是空的,最后一个包含所有数据。所以我只是验证是否有数据并完成
猜你喜欢
  • 2020-09-20
  • 2016-09-02
  • 1970-01-01
  • 1970-01-01
  • 2017-08-16
  • 1970-01-01
  • 2017-10-26
  • 1970-01-01
  • 2022-01-13
相关资源
最近更新 更多