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
}
Другие вопросы по тегам