不确定是不是(评估“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
}
})
};
为什么会发生这种情况时,我只是想将数据发送到一个点击功能,推动导航到一个新的看法?
答
既然你是通过你的renderArchiveOrder
方法作为值到另一个组件,它失去了它的上下文。因此,您的方法中的this
变量将而不是引用您的组件实例,并试图访问this.onPress
将产生undefined
。
为了解决这个问题,只需将它传递给你的ListView
组件之前,你的方法绑定到组件实例:
<ListView
dataSource={this.state.archiveDataSource}
renderRow={this.renderArchiveOrder.bind(this)}
style={styles.listView}/>
有史以来最好的诠释!多谢,伙计 – Mayeul