React native TouchableOpacity onPress Problems

老子叫甜甜 提交于 2020-01-13 10:36:26

问题


I have a simple icon button as follows :

class SideIcon extends Component {
  render() {
    return (
      <TouchableOpacity onPress={console.log('puff')} style={styles.burgerButton}>
        <Icon name="bars" style={styles.burgerIcon}/>
      </TouchableOpacity>
    );
  }
}

It's called from the following component :

export default test = React.createClass({
  getInitialState: function() {
    return {
      isModalOpen: false
    }
  },

  _openModal() {
    this.setState({
      isModalOpen: true
    });
  },

  _closeModal() {
    this.setState({
      isModalOpen: false
    });
  },
  render() {
    return (
     <View style={styles.containerHead} keyboardShouldPersistTaps={true}>
     **<SideIcon openModal={this._openModal} closeModal={this._closeModal} />**
      <Text style={styles.logoName}>DareMe</Text>
      <SideBar isVisible={this.state.isModalOpen} />
     </View>
    );
  }
});

But the onPress on the TouchableOpacity never works. Where I'm going wrong ? Although It shows console statements during the component load.


回答1:


You should bind a function that invokes your code.

For example:

<TouchableOpacity onPress={() => console.log('puff')} style={styles.burgerButton}>
  <Icon name="bars" style={styles.burgerIcon}/>
</TouchableOpacity>

A better way is to give it a reference to a component function

class SideIcon extends Component {
  handleOnPress = () => {
    console.log('puff')
  }
  render() {
    return (
      <TouchableOpacity onPress={this.handleOnPress} style={styles.burgerButton}>
        <Icon name="bars" style={styles.burgerIcon}/>
      </TouchableOpacity>
    );
  }
}


来源:https://stackoverflow.com/questions/42763760/react-native-touchableopacity-onpress-problems

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!