不确定是不是(评估“this.onPress.bind”)

问题描述:

吉斯特对象: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

既然你是通过你的renderArchiveOrder方法作为值到另一个组件,它失去了它的上下文。因此,您的方法中的this变量将而不是引用您的组件实例,并试图访问this.onPress将产生undefined

为了解决这个问题,只需将它传递给你的ListView组件之前,你的方法绑定到组件实例:

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

有史以来最好的诠释!多谢,伙计 – Mayeul