我如何通过成功和 id 传递可触摸。
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"参数将滚动视图滚动到 X 坐标
由于您使用的是 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>
然后在你的手柄上项目触摸:
handleItemTouch(index) {
//do stuff
}