2015-11-29 14 views
15

Tepki-yerel yükseltmeyi yapana kadar üzerinde çalıştım.Dokunmatik ekranYüksek ışık Çalışmadosyası çalışmıyor

I having onPress prop çağrılan olmamasıdır:

İşte
<TouchableHighlight style={styles.button} 
     underlayColor='#f1c40f' 
     onPress={this.signIn}> 
    <Text style={styles.buttonText}>Sign In</Text> 
</TouchableHighlight> 

benim signin'i fonksiyonudur:

signIn: function(){ 
console.log("SignInAction signIn") 
this.fetchData(); }, 

signin'i düğmesi basılı olarak göründüğünde ben Tıkla ama günlük deyimi ateş etmiyor. Bu gibi çağrılabilir

cevap

30

Dene: "Bu" Fonksiyonunuzda yanlış kapsamına bağlı olduğu gibi

onPress={() => this.signIn() }> 

görünüyor.

+1

Bu yaklaşımı beğeniyorum. Ayrıca not, benim kod this.signIn olmadan() vardı. Ok işlevi olmadan da çalışır. – lernerbot

+0

Benzer bir sorunla karşılaştım: liste kaydırıldığında, onPress sayfamda bir kaydırma listesi içinde otomatik olarak çağrıldı. Ok işlevinin eklenmesi onu düzeltti! –

+0

Hayatımı kurtardın. Ve kendi kapsamı olan signIn önlemek için shorthand fonksiyonunu kullanmak için parlak. Güzel! –

5

da böyle yapabilir: kodun

onPress={this.signIn.bind(this)}> 

dinlenme değişikliği gerekmez. Ayrıca

2

, yerine bir fonksiyon örneğin daha değil misin kullanımı bağlama yapmak ve biz ES6 sözdizimi kullanıyorsanız bu yana, dışarı (sizin bileşeni içinde) bir const olarak atanmış işlev yazabilirsiniz eğer:

signIn =() => { 
    // code here 
} 
bağlı olacaktır

<TouchableHighlight style={styles.button} 
     underlayColor='#f1c40f' 
     onPress={this.signIn}> 
    <Text style={styles.buttonText}>Sign In</Text> 
</TouchableHighlight> 

Bu signin'i beri "Bu" tutarlı bağlamını tutmalı:

sonra yine başka bir yerde yapıcı veya içinde bağlamak zorunda kalmadan zaten böyle bileşeni içinde diyebilirsin bileşen başlatma işleminde sadece bir kez.

+0

BTW üç yöntem de geçerlidir. Tercih meselesi gibi görünüyor. –

İlgili konular