Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript React.map()函数中的递增变量_Javascript_Arrays_Reactjs_Jsx - Fatal编程技术网

Javascript React.map()函数中的递增变量

Javascript React.map()函数中的递增变量,javascript,arrays,reactjs,jsx,Javascript,Arrays,Reactjs,Jsx,我通过一个数组进行映射,我希望我的变量I被用作我的组件的唯一键,但是我不知道如何或在哪里正确地增加它,如果我在标记中添加{I++},那么它将在屏幕上显示I的值,如果我改为添加{this.functioni},并将I++放在函数中,它将调用函数,但每次我都会将变量重新初始化为0,因此键值不是唯一的。我需要I的值作为组件的键,并且每次都必须增加1,有人知道我如何实现这一点吗?此外,正如您在代码中看到的,当单击组件时,它将进行函数调用,该调用将把单击组件的i值作为参数发送给被调用的函数 代码: .ma

我通过一个数组进行映射,我希望我的变量I被用作我的组件的唯一键,但是我不知道如何或在哪里正确地增加它,如果我在标记中添加{I++},那么它将在屏幕上显示I的值,如果我改为添加{this.functioni},并将I++放在函数中,它将调用函数,但每次我都会将变量重新初始化为0,因此键值不是唯一的。我需要I的值作为组件的键,并且每次都必须增加1,有人知道我如何实现这一点吗?此外,正如您在代码中看到的,当单击组件时,它将进行函数调用,该调用将把单击组件的i值作为参数发送给被调用的函数

代码:


.map已经提供了增量,只需向回调添加第二个变量即可

  render() {
  var {array} = this.state;

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

.map已经提供了增量,只需向回调添加第二个变量即可

  render() {
  var {array} = this.state;

  return (
    <div className="App">
    {array.map((item,i) => (
      <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>
)}

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

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

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

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

您可以尝试使用array.mapx,key=>console.logkey。。
您可以添加代码来代替console.log,它应该可以根据您的要求正常工作。

您可以尝试array.mapx,Key=>console.logkey。。
您可以添加代码来代替console.log,它应该可以根据您的要求正常工作。

哦,天哪,我觉得自己太笨了,因为我确实尝试过这种方法,但我总是会出错,我刚刚意识到原因,我总是在后面加,但从来没有在前面加,所以我会在不打开的情况下关闭括号…天哪,我觉得自己太笨了,因为我实际上尝试过这种方法,但我总是会出错,我才意识到为什么,我总是在后面加上,但从来没有在前面加上,所以我会关闭括号而不打开它。。。。