首页 > 解决方案 > 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 的新手。

标签: 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}>

看看关闭

希望这会有所帮助!


推荐阅读