微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用ReactJs映射获取的对象时出错

如何解决使用ReactJs映射获取的对象时出错

问题

我想从contentflow中获取文章,但这是我得到的错误

TypeError: Cannot read property 'id' of undefined
(anonymous function)
E:/Project-VidM/client/src/components/Blog/index.js:21
  18 | 
  19 |   const Articles = article.map((entry) => {
  20 |       return(
> 21 |        <div className="entry" key={entry.sys.id}>
     | ^  22 |        <h1>{entry.fields.title}</h1>
  23 |        <img src={entry.fields.featuredImage.sys} />
  24 |        {entry.fields.body.data}
View compiled

这是我的React代码

import React,{ useState,useEffect} from 'react'
import * as contentful from 'contentful';

const BlogComponent = () => {
    const [article,setArticle] = useState([]);

    const client = contentful.createClient({
    space: 'xxxxxxxx',accesstoken: 'xxxxxxxxxxxxxxxxxxxxxxxx'
    });
    
    useEffect(() => {
       client.getEntries()
            .then((res) => {
                setArticle([res.items]);
            })
    },[])

   const Articles = article.map((entry) => {
       return(
        <div className="entry" key={entry.sys.id}>
        <h1>{entry.fields.title}</h1>
        <img src={entry.fields.featuredImage} />
        {entry.fields.body.data}
        </div>
       )
    }) 
    return (
       <div>
           {Articles}
       </div>
    )
}

export default BlogComponent

res.items上执行console.log时,得到以下输出

contentful

如何映射特定字段?

解决方法

在console.log res.items中是一个数组,您将其放在另一个数组中

它应该是setArticle(res.items)而不是setArticle([res.items])

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。