2017-11-15 33 views
0
<TouchableHighlight 
    onPressIn={this._onPressIn} 
> 

_onPressIn =() => { 
    this.setState({ pressing: true }); 
} 
//1. works 

_onPressIn(){ 
    this.setState({ pressing: true }); 
} 
//2. error 

<TouchableHighlight 
    onPress={this._onPress} 
> 

_onPress(){ 
    Alert.alert('','HELLO'); 
} 
//3. works 

_onPress=()=>{ 
    Alert.alert('','HELLO'); 
} 
//4. works 

は、私は非常によく英語を話すことができないの矢印表記。だから私はあなたが私の言葉を理解できるように努力します。は、ネイティブの反応 -

1と2の間に何か違いがありますか? それが存在すれば、なぜ3と4が同じ結果を持っているのですか?

Iは1と2の間に違いはありませんと思っています..しかし、あなたは、あなたが「これ」にバインドする必要が矢印の機能を使用していない場合例1 ..他のではなく、通常

+1

arrow関数は自動的にこのコンテキストを設定しますが、通常はjsxコードの中で矢印関数を設定します。あるいは、コンストラクタでこれをバインドします。 – Icepickle

+0

違いは 'this'キーワードです。 –

答えて

0

を働いているあなたボタン。例:

<TouchableHighlight 
    onPressIn={this._onPressIn.bind(this)} 
> 

は、ケース#2で動作するはずです。

+0

WWOOWW !!!!!!! 私はあなたを非常に大変うれしく思います。 –

+0

@조光子大歓迎です。質問に正しいとマークしてください。 (私の答えの横のチェックアイコンをクリックしてください)ありがとう – TimH

+0

ケース3では、私は 'this'をバインドしませんでしたが、なぜそれが正常に動作するのですか? –

関連する問題