Javascript React Native:将id设置为组件并获取此组件';身份证

Javascript React Native:将id设置为组件并获取此组件';身份证,javascript,react-native,Javascript,React Native,我正在开发我的第一个React本机应用程序,我正在尝试为组件设置一个id,以便在按下该组件并根据该组件的id显示数据时确定该视图 这就是我迄今为止所尝试的: renderRow(rowData, sectionID, rowID){ var past_matches_circles =[]; for(var i=0; i<isPast; i++){ past_matches_circles.push( <TouchableOpacity id={i} k

我正在开发我的第一个React本机应用程序,我正在尝试为组件设置一个id,以便在按下该组件并根据该组件的id显示数据时确定该视图

这就是我迄今为止所尝试的:

 renderRow(rowData, sectionID, rowID){
  var past_matches_circles =[];
  for(var i=0; i<isPast; i++){
    past_matches_circles.push(
      <TouchableOpacity id={i} key = {i} collapsable={false} style={styles.small_circle} onPress={()=>this.pressOnCircle(rowData[`${i}`].MatchID)}>
      </TouchableOpacity>
    );
  } 
  return (
    <View>
      <View style={{flexDirection:'row'}}>
        {past_matches_circles}
      </View>
      <View style={{flexDirection:'row'}}>
        <Image style={{width:100, height:100, margin:5}} source={{uri:'http://facebook.github.io/react/img/logo_og.png'}}/>
        <View style={{justifyContent:'center', flex:1}}>
          <Text> {rowData[0].MatchDate} </Text>
          <Text> {rowData[0].HomeTeam} VS {rowData[0].AwayTeam} </Text>
        </View>
      </View>
    </View>
  );
}
pressOnCircle(i){
  ToastAndroid.show('key ' + i, ToastAndroid.SHORT);
}
renderRow(行数据、节ID、行ID){
var past_匹配_圆=[];
对于(var i=0;i
);
} 
返回(
{过去的_匹配_圆}
{rowData[0].MatchDate}
{rowData[0]。HomeTeam}VS{rowData[0]。AwayTeam}
);
}
按圆(i){
ToastAndroid.show('key'+i,ToastAndroid.SHORT);
}
但不幸的是,迭代器
i
值总是等于循环中的最后一个值,而不管我按哪个视图

有人能帮我获取组件的id吗?

您可以使用
.bind
创建一个新函数,该函数将关闭
i
的值。这对性能不是最好的,因为您每次都要创建一个新函数

onPress={this.pressOnCircle.bind(this,i)}>
此外,您可能需要执行以下操作

this.pressOnCircle=this.pressOnCircle.bind(this);

在构造函数中,以在处理程序中获取适当的
上下文

几天后,我终于解决了这个问题。我会把它贴给谁来回答这个问题

我将视图推入数组而没有返回,因此
I
的值总是相同的

所以我所做的是:

renderCircle(id) {
  return <TouchableOpacity key={id} style={styles.small_circle} onPress={() => this.pressOnCircle(id)}>
         </TouchableOpacity>;
}
renderRow(rowData, sectionID, rowID){
  var past_matches_circles =[];
  for(var i=0; i<isPast; i++){
    past_matches_circles.push(
      this.renderCircle(i)
    );
  }
  var { page, animationsAreEnabled } = this.state;
  return (
    <View>
      <View style={{flexDirection:'row'}}>
        {past_matches_circles}
      </View>
      <View style={{flexDirection:'row'}}>
        <Image style={{width:100, height:100, margin:5}} source={{uri:'http://facebook.github.io/react/img/logo_og.png'}}/>
        <View style={{justifyContent:'center', flex:1}}>
          <Text> {rowData[0].MatchDate} </Text>
          <Text> {rowData[0].HomeTeam} VS {rowData[0].AwayTeam} </Text>
        </View>
      </View>
    </View>
  );
}
renderCircle(id){
返回此项。按圆圈(id)}>
;
}
renderRow(行数据、节ID、行ID){
var past_匹配_圆=[];

对于(var i=0;我想知道您的答案,我尝试了它,但在使用.bind之后,onPress事件根本没有触发