【问题标题】:How do I map across a nested array of objects?如何映射嵌套的对象数组?
【发布时间】:2021-07-26 12:59:36
【问题描述】:

所以我的问题是,我正在使用 Sanity.io 来管理插画家作品集页面中的内容。

我正在尝试访问我在插画家所做的每个项目中放入的图片库。

我的数据是这样嵌套的:

data structure I'm trying to access

我正在尝试这样访问它:

{data.sanityProject.gallery.images.map((image) => (
            <SwiperSlide key={image.id}>
              <GatsbyImage
                image={image.asset.gatsbyImageData}
                // alt={image.image.title}
              />
            </SwiperSlide>
...

产生的错误信息是这样的:

Cannot read property 'gatsbyImageData' of undefined
<SwiperSlide key={image.id}>
  138 |               <GatsbyImage
> 139 |                 image={image.asset.gatsbyImageData}
      |                                   ^
  140 |                 // alt={image.title}
  141 |               />
  142 |             </SwiperSlide>

我知道这种方法很接近,但是是错误的。我不知道如何解决这个问题。我还是新开发人员,我非常清楚这可能是我所缺少的非常简单的东西,但我只是不知道在哪里寻找答案。

任何帮助都将不胜感激,也将作为学习经验获得。

照顾好大家。

【问题讨论】:

    标签: arrays reactjs graphql sanity


    【解决方案1】:

    images 是这个形状的对象数组:

    {
       image: {
          id: ...,
          asset: ...,
          // etc.
       }
    }
    

    因此,为了正确访问它们,您应该稍微更改代码:

    {data.sanityProject.gallery.images.map((imageItem) => (
                <SwiperSlide key={imageItem.image.id}>
                  <GatsbyImage
                    image={imageItem.image.asset.gatsbyImageData}
                    // alt={image.image.title}
                  />
                </SwiperSlide>
    

    您可以选择更简洁(但更高级)的语法 (Destructuring):

    {data.sanityProject.gallery.images.map(({image}) => (
                <SwiperSlide key={image.id}>
                  <GatsbyImage
                    image={image.asset.gatsbyImageData}
                    // alt={image.image.title}
                  />
                </SwiperSlide>
    

    【讨论】:

    • 就是这个,非常感谢!我意识到我现在的问题是太担心对象名称是 0,1,2,3 ... ...并且调用 .map 迭代器并不重要。再次感谢您,祝您有美好的一天!保持安全
    • 很高兴它对你有用。如果它解决了您的问题,请接受最佳答案
    猜你喜欢
    • 2021-09-30
    • 2021-02-08
    • 2023-01-23
    • 2022-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-07
    • 2021-06-23
    相关资源
    最近更新 更多