我是本机反应的新手,正在尝试开发一个可以在不同屏幕之间导航的应用程序。为此,我正在使用导航。但是问题是,当多个TouchableOpacity组件被推入数组并使用函数返回到我的视图时,导航器正在获取循环的最后一个变量值的参数值。
// my function to push dynamic blocks in render function
myFunction() {
var myelement = [];
for ( var i = 0 ; i < 2 ; i++ )
{
// loop goes twice pushing 2 TouchableOpacity blocks setting dynamic i values
myelement.push(
<TouchableOpacity
activeOpacity={1}
onPress={this.props.navigation.navigate('Screen2', {
mykey: `value${i}`,
})>
<Text>Hello</Text>
</TouchableOpacity>
);
}
return myelement;
}
当单击第一个TouchableOpacitiy块时(由于循环仅进行两次,仅创建2个块),i的值应为0。
但是取而代之的是,它采用了i = 1的最终值
答案 0 :(得分:0)
我认为这可以解决您的问题:
myFunction() {
const myElement = [];
const newElement = [0,1].map(el => (
<TouchableOpacity
activeOpacity={1}
onPress={() => this.props.navigation.navigate('Screen2', {
mykey: `value${el}`,
})>
<Text>Hello</Text>
</TouchableOpacity>
));
return myElement.push(newElement);
}