2017-03-13 85 views
3

我有一個簡單的圖標按鈕,如下所示:陣營本地TouchableOpacity onPress問題

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

它由以下組件調用:

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> 
    ); 
    } 
}); 

但在TouchableOpacityonPress永遠不會奏效。我哪裏錯了?雖然它在組件加載期間顯示控制檯語句。

回答

4

你應該綁定調用你的代碼的功能。

例如:

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

更好的方法是給它一個參照本發明的部件的功能

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