javascript - 在 .map() 函数中 react 递增变量

标签 javascript arrays reactjs jsx

我正在通过一个数组进行映射,我想要我的变量 i用作我的组件的唯一键,但是我不知道如何(或在哪里)正确地增加它,如果我添加 {i++}<Component> 内tags 然后它将显示 i 的值在屏幕上,如果我改为添加 {this.function(i)}并放置 i++在函数内部,它将调用函数但变量 i将重新初始化为 0 的值每次,所以键值不会是唯一的。我需要 i 的值成为组件的关键,每次都必须递增 1,有谁知道我如何实现这一点?此外,正如您在代码中看到的那样,当单击该组件时,它将进行一个函数调用,该函数将发送 i 的值。被点击组件的参数作为被调用函数的参数。

代码:

  function(i) {
    console.log(i)
  }

  render() {

  var i = 0;
  var {array} = this.state;

  return (
    <div className="App">
    {array.map(item => (
      <Component key={i} onClick={(e) => this.function(i, e)}>
        <p>{item.name}</p>
      </Component>
    ))}
    </div>
  );
}

最佳答案

map 函数获取第二个参数,即元素的索引:

{array.map((item, i) => (
  <Component key={i} onClick={(e) => this.function(i, e)}>
    <p>{item.name}</p>
  </Component>
)}

请注意,如果您打算在运行时对该数组进行排序或更改其内容,那么使用数组索引作为键可能会导致一些错误,因为有时旧组件会被误认为是新组件。如果它只是一个静态数组,那么使用索引作为键应该不是问题。

关于javascript - 在 .map() 函数中 react 递增变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59089249/

相关文章:

android - 检查输入的答案是否匹配数组 xml android

java - 返回数组的语义

javascript - 在 reactjs 组件中预加载数据

c - 如何将字符串标记为 c 中的 int 数组?

javascript - AngularJS:ng-checked 没有真正绑定(bind)

javascript - 按回车键后清除文本框

多个文本框的 Javascript 验证

javascript - 更改 React 组件的顺序仅在第二次单击后触发重新渲染

javascript - undefined 不是一个对象(评估 '_this2.props.navigation.navigate' ) - React Native

以 HTML 编码的 Javascript 不起作用