2016-04-06 59 views
1

吉斯特對象:Dashboard.js不確定是不是(評估「this.onPress.bind」)

我創造與之反應原生iOS應用程序,我得到這個錯誤時,我的Dashboard.js是渲染。

Dashboard.js呈現不同scrollableTabView的均含有一ListView,我已經包括了從下一個列表項一些代碼。

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> 
    ); 
    } 

我的問題是,當Dashboard.js被渲染,正在顯示的應用崩潰和所包括的屏幕截圖。

它明確指出,renderArchiveOrder: Dashboard.js @ 364:0正在拋出一個錯誤,這裏是我的onPress函數。 我無法理解我的錯誤是行,以及爲什麼我的TouchableHighlight onPress不起作用。

id: index是行。

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

爲什麼會發生這種情況時,我只是想將數據發送到一個點擊功能,推動導航到一個新的看法?

Screenshot from view render

回答

4

既然你是通過你的renderArchiveOrder方法作爲值到另一個組件,它失去了它的上下文。因此,您的方法中的this變量將而不是引用您的組件實例,並試圖訪問this.onPress將產生undefined

爲了解決這個問題,只需將它傳遞給你的ListView組件之前,你的方法綁定到組件實例:

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

有史以來最好的詮釋!多謝,夥計 – Mayeul

相關問題