0
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)
}`
Vikas Yadav
  • 3,094
  • 2
  • 20
  • 21
  • 1
    Possible 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 Answers2

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