2017-06-21 71 views
1

我需要你的幫助!我的目標是在點擊按鈕後改變按鈕的樣式!我聽說direct manipulation,我決定試一試。現在我不知道爲什麼,但是我的TouchableOpacity中的onPress不起作用。下面是代碼:onPress在TouchableOpacity不會觸發

<TouchableOpacity onPress={() => this.changeStyle}> 
    <TouchableHighlight style={styles.answer} ref="answer1"> 
     <Text ...> Some Text </Text> 
    </TouchableHighlight> 
</TouchableOpacity> 

,這裏是我的changeStyle功能:

changeStyle() { 
    this.refs['answer1'].setNativeProps({ 
     style: { backgroundColor: "#13a88a"} 
    }); 
} 

現在我不知道爲什麼,但「onPress」永遠不會觸發。 謝謝你的回答!

+0

添加'onPress'到'TouchableHighlight'和輸出的東西來測試是否這需要該事件。我懷疑它會這樣做。 – G0dsquad

+0

@ G0dsquad我已經做到了,裏面TouchableHighlight的onPress工作。問題是我不能調用裏面的函數changeStyle,因爲它是我想改變風格的TouchableHighlight。而setNativeProps只適用於容器的孩子(這裏的TouchableOpacity是容器,TouchableHighlight是孩子)。 –

+1

可以請你加入'()''到this.changeStyle' –

回答

4

如果你想使用「this.changeStyle`執行功能,寫你的onPress,如下所示:

<TouchableOpacity onPress={this.changeStyle}/>

如果你打算到onPress道具執行this.changeStyle內傳遞一個函數寫你的onPress,如下所示:

<TouchableOpacity onPress={() => this.changeStyle()}/>

PS:爲什麼你有一個<TouchableHighlight/>裏面<TouchableOpacity/>?只需使用一個並添加onPress道具就可以了。

+0

謝謝!爲什麼我使用''裏面TouchableOpacity' TouchableHighlight'是因爲文檔中我看到'setNativeProps'用於更新孩子的道具。我想改變按鈕的風格,在這種情況下,'TouchableHighlight'和'Text'裏面 –

+0

然後我看到沒有使用的TouchableOpacity。你可以添加onPress到TouchableHighlight,它也可以工作。如果它解決了您的問題,請儘量標記爲已解決。 – Raymond