Вы могли бы использовать какую-то валютную функцию:
constructor(){
this.clickHandler = this.clickHandler.bind(this);
}
clickHandler(index) {
return function(e) {
// do click things
}.bind(this);
}
render(){
array.map(item,index)=>{
<input onclick={this.clickHandler(index)} /> //Here i want to pass the item & index as args
}
}
Вы действительно не можете избежать создания нового обратного вызова функции для каждого index
.
Да, деструкторы назовут как ожидалось, то же, как будто Вы вышли из объема рано из-за исключения.
Стандарт 6.6/2 (Операторы перехода):
На выходе от объема (однако выполненный), деструкторы называют для всех созданных объектов с продолжительностью автоматического хранения, которые объявляются в том объеме в обратном порядке их объявления.