Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.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 在循环中处理时,onClick中的id重复_Javascript_Reactjs - Fatal编程技术网

Javascript 在循环中处理时,onClick中的id重复

Javascript 在循环中处理时,onClick中的id重复,javascript,reactjs,Javascript,Reactjs,我想不出怎么修理它。我有这个json[{'key':'data','id':'3213'},{'key':'data','id':'7684'}]并且需要将'id'传输到onClick。I generete提供了一个循环帮助: this.array_container = [] for (var key in json) { array_container.push( <div onClick={() => this.func(json[key]['id'])}&g

我想不出怎么修理它。我有这个json
[{'key':'data','id':'3213'},{'key':'data','id':'7684'}]
并且需要将'id'传输到onClick。I generete提供了一个循环帮助:

this.array_container = []
for (var key in json) {
   array_container.push(
      <div onClick={() => this.func(json[key]['id'])}><p>json[key]['key']</p></div>
   )
}
问题是第二个“id”是在onClick中更改第一个容器中的“id”。两个容器在onClick中具有相同的id。什么错误?
Json具有不同的id,这是肯定的,您需要在arrow函数中传递参数。这将解决以下问题:

{/* -----------vv--------denote--vvvvvvvvvvvvv--- */ }
<div onClick={(id) => this.func(json[key]['id'])} key={key}>
   <p>json[key]['key']</p> {/* ---also don't forget ^ key */}
</div>
您现在甚至可以侦听事件对象

或者,不使用箭头功能:

onClick={this.func(e, json[key]['id'])}
现在,您可以在组件类中编写公共类方法:

func = id => e => {
  //...
}

您应该尝试
map

this.array_container = [];
json.map((obj) => {
   this.array_container.push(
      <div onClick={() => this.func(obj.id)}><p>{obj.key}</p></div>
   )
});
this.array_container=[];
json.map((obj)=>{
此.array\u container.push(
this.func(obj.id)}>{obj.key}

) });
这不是JSON,它是一个JavaScript对象数组关联数组,但为什么id是dublicate?JavaScription中没有关联数组答案对您有用吗?如果是这样的话,考虑接受其中的一个。谢谢,但是在错误代码中:改变这个。FUNC(Obj.ID)}> P>{Obj.Ki}}/P>
func = id => e => {
  //...
}
this.array_container = [];
json.map((obj) => {
   this.array_container.push(
      <div onClick={() => this.func(obj.id)}><p>{obj.key}</p></div>
   )
});