【问题标题】:make a unique number id for every item I get from the api response为我从 api 响应中获得的每个项目创建一个唯一的编号 id
【发布时间】:2019-03-18 14:56:03
【问题描述】:

因此,我在这里尝试映射从 API 获得的响应,在从 API 获取项目之前,我正在对其进行静态测试,并为从 {1} 开始的每个项目创建了一个唯一的数字 ID现在我正在尝试找到一种方法,为我得到的每个项目创建某种 for 循环,为每个项目提供一个从 {1} 开始的唯一编号 id,我该如何实现?

<div className="items">
  {this.state.items.map(i =><a href="/" id={1} onClick={this.targetValue} className={this.state.selected === "1" ? "selected" : ""}>{i.name}</a>
</div>

【问题讨论】:

  • 使用 id={Math.floor(Math.random() * 12) + 1} 计数 1 到 12
  • 我认为在我的情况下它不能是随机的,我只想制作一个从 1 到 10 的 for 循环或其他东西

标签: reactjs ecmascript-6 lodash fetch-api


【解决方案1】:

map 函数实际上给你一个索引作为第二个参数。

<div className="items">
  {this.state.items.map((i, idx) =><a href="/" id={idx} onClick={this.targetValue} className={this.state.selected === "1" ? "selected" : ""}>{i.name}</a>
</div>

【讨论】:

  • 如果我想将它与类名中的 this.state.selected 进行比较怎么办? targetValue 函数包含一个 setState,它将 selected 设置为“id”值
  • 我正在尝试制作 this.state.selected === idx 但它不起作用
  • 那你比较className={this.state.selected === idx ? "selected" : ""}
【解决方案2】:

.map 为您提供索引,您可以将其用于唯一 ID。由于您希望 id 从 1 开始,因此您需要 index+1 因为索引从 0 开始

  <div className="items">
       {this.state.items.map((i, index) => <a href="/" id={index+1} onClick={this.targetValue} className={this.state.selected === index +1? "selected" : ""}>{i.name}. </a>
  </div>

【讨论】:

  • 如果我想将它与类名中的 this.state.selected 进行比较怎么办? targetValue 函数包含一个 setState,它将 selected 设置为“id”值
  • 我正在尝试创建 this.state.selected === 索引,但它不起作用
  • 我不知道为什么当我用这样的三等号制作它时它不起作用。state.selected === index+1 但是当我像这样制作双等号时它确实有效==
  • 因为 this.state.selected 可能是不同的类型。 === 仅当两个操作数具有相同的值和相同的数据类型时才有效。在您的情况下,索引和 this.state.selected 都是不同的数据类型,因此无法正常工作。
  • 是的,我知道,但我将 selected 的初始状态设置为 0,并且索引的类型为 number,所以这就是我感到困惑的原因
猜你喜欢
  • 2015-08-23
  • 2014-09-30
  • 1970-01-01
  • 2019-06-14
  • 2022-01-21
  • 2022-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多