Javascript 尝试从阵列访问信息时,React JS返回undefined
我的信息存储在一个json文件中,可以通过axios调用和mock.js访问该文件,我可以访问我的信息。 以下是数据:Javascript 尝试从阵列访问信息时,React JS返回undefined,javascript,arrays,reactjs,Javascript,Arrays,Reactjs,我的信息存储在一个json文件中,可以通过axios调用和mock.js访问该文件,我可以访问我的信息。 以下是数据: information: { name: 'Company name', aboutParagraphs: [ ["X"], ["Y"], ["Z"], ["XX"]
information: {
name: 'Company name',
aboutParagraphs: [
["X"],
["Y"],
["Z"],
["XX"]
],
当我尝试访问整个数组时,它将返回所有项。
但是,当我尝试访问单个数组时,比如说information.aboutParagraphs[0]
,React返回一个错误TypeError:无法读取未定义的的属性“0”
代码如下:
<div className="col-lg-6">
<div className="mi-about-content">
<h3>
{information.name}
</h3>
<p>
{information.aboutParagraphs[0]}
</p>
</div>
</div>
{information.name}
{information.aboutParagraphs[0]}
我试着检查其他解决方案,但它们似乎都有语法问题,或者使用了错误的括号,而这里的情况并非如此——据我所知。
我错过了什么?这是一个语法问题吗?提前感谢。试试这个:
{information && information.aboutParagraphs && information.aboutParagraphs[0]}
如果没有看到您的获取,我不确定,但是当您尝试呈现一些异步获取但尚未完成的数据时,通常会出现这些问题
我意识到这有点过分,但这会告诉你这是否是一个异步问题。如果它甚至在提取完成之前的一瞬间尝试呈现,它将是未定义的
上面这一行所做的是在它尝试呈现信息之前检查所有3个项目是否都存在。aboutParagraphs[0]您确定您收到的数据格式与您引用的一样吗?您是如何记录此对象的?首先,尝试替换为:{information?.aboutParagraphs[0]}
,以防止显示未定义信息的属性。关于这个问题,我的一个猜测是,这个对象首先收到的不是数组,这导致了一个错误,然后在对象中插入了正确的格式,因此您在日志记录中看到了良好的结果。您可以通过执行以下操作来检查:{information&&array.isArray(information.aboutparaphs)?information.aboutParagraphs[0][0]:“存在问题”}
这可能是在提取完成之前呈现的问题,或者数据结构不是您认为的那样。我认为它在记录数组时呈现信息没有问题,并且知道类型是数组。我在另一个应用程序中也做了类似的事情,效果很好,所以我真的不确定这是一个bug还是一个异步问题。我无法重现这个问题。正如Alex所建议的,您几乎肯定是在axios调用完成之前渲染数据。别忘了,将对象记录到控制台(至少在chrome中)会为您提供对象的实时视图,而不是调用console.log时对象的快照。添加上面的行会按预期返回数据,谢谢!很高兴它起作用了。在获取和渲染时经常发生这种情况。在呈现数据之前,最好先进行一些这样的检查,以确保数据确实存在。