我有这样的回应:

javascript - 通过对象的ReactJS映射-LMLPHP

我想在此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时,您传递的函数将给您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>
    ))}
    

    08-04 17:28