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