2017-01-14 62 views
3

onRadioPressed似乎沒有被調用 - 我做錯了什麼?我還需要獲取「點擊」項中包含的文字。React Native onpress無法正常工作

我相信我可以通過event.nativeEvent.text得到,對嗎?

感謝您的任何幫助。

class RadioBtn extends React.Component { 
    constructor(props) { 
    super(props); 
    this.state = { 

    }; 
    } 

    onRadioPressed(event) { 
    console.log('RADIOBUTTON PUSHED:'); 
    } 

    render() { 

    return (
     <View style={styles.radioGrp}> 
      <View style={styles.radioContainer}> 
       <TouchableHighlight onpress={() => this.onRadioPressed.bind(this)} underlayColor='#f1c40f'> 
        <Text style={styles.radio}>Left</Text> 
       </TouchableHighlight> 
      </View> 
      <View style={styles.radioContainer}> 
       <TouchableHighlight onpress={() => this.onRadioPressed.bind(this)} underlayColor='#f1c40f'> 
        <Text style={styles.radio}>Right</Text> 
       </TouchableHighlight> 
      </View> 
     </View> 
    ); 
    } 
} 

回答

4

所以在這裏:

<TouchableHighlight onpress={() => this.onRadioPressed.bind(this)} underlayColor='#f1c40f'> 
    <Text style={styles.radio}>Left</Text> 
</TouchableHighlight> 

首先改變onpressonPress。這裏() => this.onRadioPressed.bind(this)你指定一個箭頭函數,返回另一個函數this.onRadioPressed.bind(this),但你永遠不會觸發它。

正確的方法:

// You can do either this 
<TouchableHighlight onPress={() => this.onRadioPressed()} underlayColor='#f1c40f'> 
    <Text style={styles.radio}>Left</Text> 
</TouchableHighlight> 

// Or you can do either this 
<TouchableHighlight onPress={this.onRadioPressed.bind(this)} underlayColor='#f1c40f'> 
    <Text style={styles.radio}>Left</Text> 
</TouchableHighlight> 

我會建議您檢查下面這篇文章線

<TouchableHighlight onPress={this.onRadioPressed.bind(this)} underlayColor='#f1c40f'> 

https://medium.com/@housecor/react-binding-patterns-5-approaches-for-handling-this-92c651b5af56#.irpdw9lh0

+0

謝謝 - 我剛剛在onPress上錯過了大寫字母「P」! – miarde

1

您不能綁定onpress內部鏈接的功能:如果你要綁定的功能,那麼試試這個

<TouchableHighlight onpress={() => this.onRadioPressed()} underlayColor='#f1c40f'> 

<TouchableHighlight onpress={() => this.onRadioPressed.bind(this)} underlayColor='#f1c40f'> 

使用這樣的

<TouchableHighlight onpress={this.onRadioPressed.bind(this)} underlayColor='#f1c40f'> 

乾杯: )

+0

謝謝花時間做出迴應,但第一個答案是我所需要的。 – miarde

+0

它是一樣的:) – Codesingh

1

使用或使用箭頭功能

<TouchableHighlight onPress={() => this.onRadioPressed()} underlayColor='#f1c40f'> 
相關問題