response-native - TouchableHighlight - onPress - передать параметр - если я передам итератор var, он будет каждый раз, когда наберется наибольшее число
Как я могу передать успешно и идентификатор, для которого передается touchable.
for(var i = 0; i < datasource.length;i++){
var currentIndex = i;
this.viewCollection.push(
<TouchableHighlight onPress={() => this.handleItemTouch(currentIndex)} >
</TouchableHighlight>
);
}
handleItemTouch(i) {
//i is every time equal to datasource.length
// на основе "я" я хочу прокрутить куда-то}
то, что я хочу сделать, это то, что в зависимости от того, какая сенсорная подсветка нажата, чтобы прокрутить вид прокрутки до координаты топора на основе параметра "i"
2 ответа
Так как вы используете var, переменная currentIndex не является блочной областью.
Например, первая итерация установит currentIndex
до 1, так что если вы нажмете на сенсорную подсветку... это будет правильный индекс, но для каждой итерации после обновления currentIndex
на всех осязаемых подсветках.
Вот почему currentIndex всегда будет длиной источника данных для любого из них, на который вы нажали. Вы можете исправить это с помощью let
или если вы используете итератор, такой как forEach/map, который будет иметь разные контексты выполнения.
for (let i = 0; i < datasource.length; i++){
this.viewCollection.push(
<TouchableHighlight onPress={() => this.handleItemTouch(i)} >
</TouchableHighlight>
);
}
Ты можешь использовать Function.prototype.bind
по этим вопросам. Например
<TouchableHighlight onPress={this.handleItemTouch.bind(this, currentIndex)} ></TouchableHighlight>
И тогда на вашей ручке пункт Touch:
handleItemTouch(index) {
//do stuff
}