2017-02-09 7 views
2

どのようにtouchableが渡されたか、成功したidとidを渡すことができます。 「私は」私は何をしたいのか、どこか }react-native - TouchableHighlight - onPress - passパラメーター - 反復子を渡す場合は、最も高い数値のたびに

スクロールしたい基づいて

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 

//」に基づいて座標AXにscrollviewをスクロールするために押されたtouchablehighlightに基づいていること、ですi "パラメータ

答えて

3

これらの問題についてはFunction.prototype.bindを使用できます。例

<TouchableHighlight onPress={this.handleItemTouch.bind(this, currentIndex)} ></TouchableHighlight> 

そしてあなたhandleItemTouchのために:

handleItemTouch(index) { 
    //do stuff 
} 
7

あなたはVARを使っているので、currentIndex変数がスコープのブロックではありません。

たとえば、最初の反復ではcurrentIndexが1に設定されます。そのため、touchablehighlight ...をクリックすると正しいインデックスになりますが、すべてのタッチ可能ハイライトのcurrentIndexが更新されるたびにすべての繰り返しが行われます。

これは、currentIndexが常にクリックするデータソースの長さになる理由です。これは、letを使用して修正するか、forEach/mapなどの異なる実行コンテキストを持つイテレータを使用する場合に修正できます。

for (let i = 0; i < datasource.length; i++){ 

this.viewCollection.push(

<TouchableHighlight onPress={() => this.handleItemTouch(i)} > 

</TouchableHighlight> 

); 
} 
関連する問題