2017-06-21 20 views
1

私はあなたの助けが必要です!私の目標は、クリックした後にボタンのスタイルを変更することです!私はdirect manipulationについて聞いて、それを試してみることにしました。今私は理由を知らないが、TouchableOpacity内のonPressは機能しない。ここでは、コードは次のとおりです。TouchableOpacityのonPressがトリガーしない

<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

'TouchableHighlight'に' onPress'を追加し、それがイベントを受け取るかどうかをテストするために何かを出力します。私はそれがすると思う。 – G0dsquad

+0

@ G0dsquad私はすでにそれを行い、TouchableHighlightの中のonPressが機能します。問題は、スタイルを変更したいTouchableHighlightなので、私はそれ内の関数changeStyleを呼び出すことができないということです。また、setNativePropsはコンテナの子でのみ機能します(ここではTouchableOpacityはコンテナ、TouchableHighlightは子です)。 –

+1

あなたは '()'を 'this.changeStyle'に追加してみることができます –

答えて

4

あなたが「this.changeStyle`を使用して機能を実行したい場合は、そのようなあなたたonPressを書く:あなたはthis.changeStyleを実行したonPressプロップ内の関数を渡すつもりなら

<TouchableOpacity onPress={this.changeStyle}/>

そのようなあなたたonPressを書く:

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

PSを:なぜ<TouchableOpacity/>内部<TouchableHighlight/>を持っているのですか?ちょうど1つを使用し、それにonPressの小道具を追加してください。

+0

ありがとう!私が 'TouchableOpacity'の中で' TouchableHighlight'を使用しているのは、ドキュメントで 'setNativeProps'が子の小道具を更新するために使用されていることがわかったからです。そして、私はボタンのスタイルを変更したいと思います。この場合、「TouchableHighlight」とその中の「Text」 –

+0

TouchableOpacityの使用はありません。 TouchableHighlightにonPressを追加することもできます。それがあなたの問題を解決した場合は、それを解決としてマークしてください。 – Raymond

関連する問題