Kur*_*t57 2 iteration react-native touchablehighlight
我怎样才能传递成功和可传递的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
Run Code Online (Sandbox Code Playgroud)
//基于"我"我想在某处滚动}
我想要做的是,基于哪个触摸高亮灯按下滚动视图基于"i"参数滚动到ax坐标
由于您使用的是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>
);
}
Run Code Online (Sandbox Code Playgroud)
您可以使用Function.prototype.bind这些事项。例如
<TouchableHighlight onPress={this.handleItemTouch.bind(this, currentIndex)} ></TouchableHighlight>
Run Code Online (Sandbox Code Playgroud)
然后在您的handleItemTouch上:
handleItemTouch(index) {
//do stuff
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4835 次 |
| 最近记录: |