即使它打印在 console.log 中,我也无法映射对象数组

IT技术 javascript arrays reactjs mongoose redux
2021-05-01 03:07:08

我正在尝试映射一组对象,但它一直说文档未定义,即使我可以在 console.log 中清楚地看到它

这就是我在console.log时得到的

{console.log(this.props.results.data)} 

在此处输入图片说明

我想要的是在文档领域。如果我展开它看起来像这样

在此处输入图片说明

由于我想打印出文档的内容,这就是我尝试做的

<div className='list-render'>
   {this.props.results.loading ? <LoadingSpinner/> : 
      <div className='row'>
         {(this.props.results.data.docs.map((data) => { // code to print individual fields )}
      </div>
   </div>}
</div> 

我得到TypeError: this.props.results.data.docs is undefined我正在使用mongoose -paginate-v2 库进行分页

1个回答

您需要检查该docs属性是否未定义。您可以通过以下几种方式做到这一点:

  1. 您可以使用可选链来检查属性是否为nullundefined那么您的代码将如下所示this.props.results.data?.docs.map...这是将它添加到 React 应用程序的方法(但如果您使用的是最新的 babel 版本 - 它应该是开箱即用的)

  2. 你自己做检查。正如评论中所建议的,最基本的一个是检查属性是否为假:

this.props.results.data.docs && this.props.results.data.docs.map((data)

不过,评论有点不正确,您不需要检查是否data为假(仅当错误指向该错误时),您docs只需检查是否为假。