var events={111:{event:'test1'},222:{event:'test2'}}
for (var key in events){
if (events.hasOwnProperty(key)) {
<button type="button" value={key} onClick={()=>{self.removeEvent(key)}}> <i className="material-icons">close</i> </button>
}
}
removeEvent(key){
console.log(key)
}`
Asked
Active
Viewed 55 times
0

Vikas Yadav
- 3,094
- 2
- 20
- 21

kranti kumar
- 33
- 5
-
1Possible duplicate of [JavaScript closure inside loops – simple practical example](https://stackoverflow.com/questions/750486/javascript-closure-inside-loops-simple-practical-example) – Kodanda Rama Durgarao poluri Feb 12 '18 at 04:26
2 Answers
1
Your problem is with context inside of the loop.
Change var
to let
to fix it:
for (let key in events){
if (events.hasOwnProperty(key)) {
<button type="button" value={key} onClick={()=>{self.removeEvent(key)}}>
<i className="material-icons">close</i>
</button>
}
}
More information here.

Sergii Rudenko
- 2,603
- 1
- 22
- 24
0
You should try to write it like below
Object.keys(events).map( key => (
events.hasOwnProperty(key) ?
<button type="button" value={key} onClick={()=>
{self.removeEvent(key)}}>
<i className="material-icons">close</i>
</button> : null
)

Leeroy_Wonkledge
- 341
- 2
- 11