无法在ReactNative嵌套组件中执行onPress

时间:2017-03-07 10:51:51

标签: react-native react-native-android

所以我使用的是本机反应,无法将函数调用onPress。我有一个SearchUser组件,它有一个render方法,我在其中调用了

<ShowUsers allUsers={this.state.details} access_token={this.state.access_token}/>

现在ShowUsers如下

class ShowUsers extends Component{ 
....
render(){
var user = this.state.details;
var userList = user.map(function(user,index){
      var img={
        uri:user.avatar.uri,
      }
      return(
        <ListItem icon  key={ index }>
              <Left>
                <Thumbnail small source={img} />
              </Left>
              <Body>
              <Text>{"@"+user.uname+" "+user.id}</Text>
                <Text note>{user.fname+" "+user.lname}</Text>
              </Body>
              <Right>
                  <Icon style={{fontSize:30}} name="ios-add-circle" onPress={this.followThem(user.id).bind(this)} />
              </Right>
          </ListItem>
        );
      });
      return(
        <View>
         {userList}
       </View>);
    }

followThem(userId){
  Alert.alert("userId "+userId);
 }

当我点击图标时,我得到以下错误信息 undefined不是一个函数(评估this.followThem(user.id))

据我所知,这个值是未定义的但是我在SearchUser组件中使用了下面的函数。哪个函数正确调用

 <Icon onPress={this.goBack.bind(this)} name="arrow-back" />

我也尝试了这个。关注Them.bind(this,user.id)但无济于事我在做什么?

1 个答案:

答案 0 :(得分:0)

简化答案 -

  render() {
    var user = [11,22,33];
    var userList = user.map((u,i) => {
      return(
        <Text key={i} onPress={this.followThem.bind(this, u)}>{u}</Text>
      );
    });
    .....
  }

注意map中使用的箭头功能。它会自动将this绑定到回调。

你也可以 -

<Text key={i} onPress={() => this.followThem(u)}>{u}</Text>