J'ai un simple bouton icône comme suit:
class SideIcon extends Component {
render() {
return (
<TouchableOpacity onPress={console.log('puff')} style={styles.burgerButton}>
<Icon name="bars" style={styles.burgerIcon}/>
</TouchableOpacity>
);
}
}
Il est appelé à partir du composant suivant:
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>
);
}
});
Mais le onPress
sur le TouchableOpacity
ne fonctionne jamais. Où je vais mal? Bien qu'il affiche des instructions de console pendant le chargement du composant.
Vous devez lier une fonction qui invoque votre code.
Par exemple:
<TouchableOpacity onPress={() => console.log('puff')} style={styles.burgerButton}>
<Icon name="bars" style={styles.burgerIcon}/>
</TouchableOpacity>
Une meilleure façon est de lui donner une référence à une fonction de composant
class SideIcon extends Component {
handleOnPress = () => {
console.log('puff')
}
render() {
return (
<TouchableOpacity onPress={this.handleOnPress} style={styles.burgerButton}>
<Icon name="bars" style={styles.burgerIcon}/>
</TouchableOpacity>
);
}
}