如何通过ReactJS中的对象进行映射?

2022-03-02 00:00:00 reactjs javascript jsx

我得到的响应如下:

我要在此HTML中显示每个对象的名称:

{subjects.map((item, i) => (
  <li className="travelcompany-input" key={i}>
    <span className="input-label">{ item.name }</span>
  </li>
))}   

但它引发错误subjects.map is not a function

首先,我必须定义对象的键,它将在其中创建一组键,我要在其中循环并显示subject.names

我还尝试了这个:

{Object.keys(subjects).map((item, i) => (
  <li className="travelcompany-input" key={i}>
    <span className="input-label">key: {i} Name: {subjects[i]}</span>
  </li>
))}

解决方案

调用Object.keys时返回对象键的数组。

Object.keys({ test: '', test2: ''}) // ['test', 'test2']

当您调用Array#map时,您传递的函数将为您提供两个参数;

  1. 数组中的项,
  2. 项目的索引。

当您想要获取数据时,需要使用item(或者在下面的示例中使用keyName),而不是使用i

{Object.keys(subjects).map((keyName, i) => (
    <li className="travelcompany-input" key={i}>
        <span className="input-label">key: {i} Name: {subjects[keyName]}</span>
    </li>
))}

相关文章