可触摸突出显示 - 按 - 传递参数 - 如果我传递迭代器 var,则每次都是最高数字



我如何通过成功和 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
}

相关内容

  • 没有找到相关文章

最新更新