react-native - onPress 参数不变
问题描述
我想显示一个项目列表,当我单击每个项目时,它会提醒我它的价值。
_onPressButton(i) {
Alert.alert('You tapped the button number ' + i)
}
_renderBlockLebel = (number) => {
var items = [];
for (var i=0; i < number; i++) {
items.push(
<TouchableOpacity onPress={() => this._onPressButton(i)} key={i}>
<View style={styles.boxItem}>
<Text>Level {i}</Text>
</View>
</TouchableOpacity>
);
}
return items;
}
render(){
return(
<View style={styles.box}>{this._renderBlockLebel(18)}</View>
);
}
我有 18 个项目,它显示得很好,但是当我点击任何项目时,它会提示“你点击了 18 号按钮”,我传递的值没有改变。
我的代码有什么问题?我是 React Native 的新手。
解决方案
当您按下标签时,值i
已达到number
(您的情况为 18)。您需要在i
每次迭代中保留 的值。_onPressButton
将声明更改为
_onPressButton = (i) => () => {
Alert.alert('You tapped the button number ' + i)
}
onPress
还将处理程序更改为
<TouchableOpacity onPress={this._onPressButton(i)} key={i}>
看看关闭。
希望这会有所帮助!
推荐阅读
- scala - 涉及高阶函数、类型参数和返回类型的scala语法解释
- javascript - Redux 商店未注册该状态已更改
- javascript - how to make a node js run a js file and issues creating a js file in node.js console window with win10
- .net - vb.net Object Array Losing Values - Handling a collection of objects
- awk - awk add(append/copy) missing colums with values based on previously matched 1st and 2nd column
- c++ - C++ 从 std::string 创建 CString 失败
- apache - Django + Apache2 + Ubuntu + WSGI + sqlite3 - attempt to write a readonly database. How to fix?
- python - How to make a floating windowless widget in python
- laravel - 隐藏表单参数传递给控制器
- go - Get project root path on runtime to read config file