React TypeError:skills.map 不是函数

Posted

技术标签:

【中文标题】React TypeError:skills.map 不是函数【英文标题】:React TypeError: skills.map is not a function 【发布时间】:2020-01-22 08:17:31 【问题描述】:

我有一个对象skills,我想遍历它并映射它的内容。对象如下所示:


    "_id": 
            "$oid":"5d85b311e180652980824193"
    ,
    "date":
            "$date": "$numberLong":"1569043209148" 
    ,
    "title": "test",
    "image":"test image",
    "description":"test desc",
    "__v": 
           "$numberInt":"0"
    

我正在使用 MongoDB 我的映射如下所示:

    componentDidMount() 
        this.props.fetchSkills();
    

    render() 

        const  skills  = this.props
        let skillData

        if (skills.length === 0) 

            return (
                <p>There are no skills to display</p>
            )

         else 

            skillData = skills.map(skill => (

                <div key=skill._id>       
                    <div>
                        <img src=skill.image  />
                    </div>

                    <div>
                        <h2>skill.title</h2>
                        <div>
                            <span>skill.date</span>
                        </div>
                        <div>
                            <p>skill.description</p>
                        </div>
                    </div>
                </div>

            ))
        

        return (
            <div>

                skillData

            </div>
        )
    

但是,我在加载页面时收到此错误:

TypeError:skills.map 不是函数

  26 |            )
  27 |         else 
  28 | 
> 29 |            skillData = skills.map(skill => (
  30 | ^               
  31 |                <div className="item" key=skill._id>       
  32 |                

我认为这是因为 .map 只能遍历数组,但我正在尝试遍历一个对象。

【问题讨论】:

【参考方案1】:

您需要有一个array,以便能够使用函数.map() 对其进行迭代

因此,只需将您的 object 转换为 array of objects,如下所示:

[
    
        "_id": 
                "$oid":"5d85b311e180652980824193"
        ,
        "date":
                "$date": "$numberLong":"1569043209148" 
        ,
        "title": "test",
        "image":"test image",
        "description":"test desc",
        "__v": 
               "$numberInt":"0"
        
    
]

现在你就可以成功使用.map()

【讨论】:

以上是关于React TypeError:skills.map 不是函数的主要内容,如果未能解决你的问题,请参考以下文章

React - TypeError:jokes.map 不是函数

TypeError: (0 , _react.useEffect) 不是函数

FireBase + React:TypeError:user.getToken 不是函数

React-Redux-SimpleJWT - TypeError:注销不是函数

Graphql,React - TypeError:无法读取未定义的属性“地图”

TypeError:无法使用 React 读取未定义的属性