2016-04-06 5 views
1

Gist bir nesne değil: Benim Dashboard.js olduğunda Dashboard.js(değerlendirirken 'this.onPress.bind')

ben Tepki-Native ile bir iOS uygulama oluşturma, bu hatayı alıyorum render.

Benim Dashboard.js her bir ListView içeren farklı scrollableTabView 's kılan, aşağıda bir liste öğesinden bazı kodlar dahil ettik.

renderArchiveOrder(order) { 
    return (
    <TouchableHighlight onPress={this.onPress.bind(order.id)}> 
     <View style={styles.listObject}> 
     <View style={styles.thumbnail}> 
     <Text style={styles.title}>#{order.bid}</Text> 
     <Text style={styles.time}>TID</Text> 
     <Text style={styles.subTime}>{order.time}</Text> 
    </View> 
    <View style={styles.information}> 
     <Text style={styles.restaurantName}>{title}</Text> 
     <Text style={styles.dropoffName>{order.locations.dropoff.address}</Text> 
    </View> 
    </View> 
    </TouchableHighlight> 
    ); 
    } 

Sorunum Dashboard.js oluşturulduğunda, uygulama çöker ve birlikte ekran görüntüsü gösteriliyor olmasıdır.

renderArchiveOrder: Dashboard.js @ 364:0'un bir hata attığını açıkça belirtiyor, işte benim onPress işlevim. Hatam anlayamıyorum hat ve neden TouchableHighlight onPress çalışmıyor.

id: index, satır 'dir.

onPress = (index) => { 
    this.props.navigator.push({ 
    title: 'Order', 
    component: Order, 
    passProps: { 
     id: index 
    } 
    }) 
}; 

Bu neden ben sadece bir tıklama işlevi veri göndermek ve yeni bir görünüme navigasyoncumuzu zorlamaya çalışıyorum ne zaman meydana gelir?

Screenshot from view render

cevap

4

başka bileşenine bir değer olarak sizin renderArchiveOrder yöntemi geçiriyorsanız bu yana, onun bağlamını kaybeder. Bu nedenle, yönteminizin içindeki this değişkeni değil bileşeninizin örneğine başvurur ve this.onPress'a erişmeye çalışmak undefined değerini verecektir. Bunu düzeltmek için

, sadece ListView bileşene geçirmeden önce bileşen örneğine yönteminizi bağlamak: Hiç

<ListView 
    dataSource={this.state.archiveDataSource} 
    renderRow={this.renderArchiveOrder.bind(this)} 
    style={styles.listView}/> 
+0

En açıklama! Tesekkurler dostum – Mayeul

İlgili konular