Javascript 返回未定义的JSON对象,即使它存在(NASA API和React)

Javascript 返回未定义的JSON对象,即使它存在(NASA API和React),javascript,json,reactjs,Javascript,Json,Reactjs,当我引用item.links时,它说它未定义,但它就在那里!!(我从NASA API获取数据) 图片: 如您所见,有links属性。我不明白为什么会这样。控制台错误: {this.imageRenderer(item.data[0].media_type, item.links[1], item.links[0])} ​出于某种奇怪的原因,当我键入关键字“Sun”时,同样的API调用也会起作用: 如果您想查看整个网站,请访问: 如果你输入'Hi'假设,它应该会显示多个结果,就像我输入'Su

当我引用item.links时,它说它未定义,但它就在那里!!(我从NASA API获取数据) 图片:

如您所见,有links属性。我不明白为什么会这样。控制台错误:

{this.imageRenderer(item.data[0].media_type, item.links[1], item.links[0])}

​出于某种奇怪的原因,当我键入关键字“Sun”时,同样的API调用也会起作用:

如果您想查看整个网站,请访问:

如果你输入'Hi'假设,它应该会显示多个结果,就像我输入'Sun'时一样(你也可以试试这个)。但是图像属性(item.links)变得未定义,如上图所示

不要忘记检查下面的imageRenderer函数。这确实有助于解释很多事情

存在item.links的图像: 更奇怪的是,当我注释掉item.links属性时,data属性填充了“cards”

更新:

当我键入“Hi”时,我运行了一个console.log来查找链接,它会获取用于显示图像的链接。唯一的问题是,即使它获得了链接,它仍然返回未定义的

图片:

用于此的函数。imageRenderer

TypeError: "item.links is undefined"

render AstronomyContainer.js:127 render AstronomyContainer.js:119 finishClassComponent13React
handleSubmit AstronomyContainer.js:28 

failed to fetch data AstronomyContainer.js:40
TypeError: item.links is undefined[Learn More] AstronomyContainer.js:127
imageRenderer(填充、填充1、填充2){
开关(东西){
案例(“视频”):
返回(
)
大小写('image'):
返回(
//    
)
违约:
返回()
}
}

我已经查看了

我认为问题出在这方面

imageRenderer(stuff, stuff1, stuff2) {
    switch(stuff) {

       case('video'):
           return (
               <iframe
                   allowFullScreen
               frameBorder="0"
               height="520"
               width="720"
               src={stuff1.href}>
           </iframe>
           )

           case('image'):
               return (
               //   <a href={hdurl} className="astronomy-image-wrapper">
               //           <img src={url} alt={title} />
               //   </a> 
               <a className="astronomy-image-wrapper">
                   <img src={stuff2.href}/>
               </a>
               )

           default:
           return(<a className="astronomy-image-wrapper">
           {/* <img src={stuff1.href} /> */}
       </a>)
   }
}
您正在尝试获取索引0和1处的链接

现在,当我检查链接的JSON时,并不是所有项目都有2个链接。因此,如果您尝试
链接[1]


下面是一个在控制台中打印链接长度的程序,我已经完成了的JSON输出

我认为问题出在这方面

imageRenderer(stuff, stuff1, stuff2) {
    switch(stuff) {

       case('video'):
           return (
               <iframe
                   allowFullScreen
               frameBorder="0"
               height="520"
               width="720"
               src={stuff1.href}>
           </iframe>
           )

           case('image'):
               return (
               //   <a href={hdurl} className="astronomy-image-wrapper">
               //           <img src={url} alt={title} />
               //   </a> 
               <a className="astronomy-image-wrapper">
                   <img src={stuff2.href}/>
               </a>
               )

           default:
           return(<a className="astronomy-image-wrapper">
           {/* <img src={stuff1.href} /> */}
       </a>)
   }
}
您正在尝试获取索引0和1处的链接

现在,当我检查链接的JSON时,并不是所有项目都有2个链接。因此,如果您尝试
链接[1]

下面是一个在控制台中打印链接长度的