一些代码:
renderMovie(product) {
<TouchableHighlight
onPress={this._pressRow()}>
<View style={styles.container}>
<View style={styles.rightContainer}>
<Text style={styles.title}>{product.brand_domain}</Text>
<Text style={styles.year}>{product.product_name}</Text>
</View>
</View>
</TouchableHighlight>
}
_pressRow(){
this.props.navigator.push({
title:'detail',
component:DetailView
})
}
1.red screen and error log:undefined不是函数(评估'this._pressRow()')
我使用'this._pressRow = this._pressRow.bind(this);'在构造函数()中
但它不起作用
3.doc example.but如果我使用'onPress = {this._onPressButton}',点击事件无效
renderButton: function() {
return (
<TouchableHighlight onPress={this._onPressButton}>
<Image
style={styles.button}
source={require('image!myButton')}
/>
</TouchableHighlight>
);
},
答案 0 :(得分:2)
这里有一个范围问题..
要解决此问题,有两种可能的解决方案:
- 您需要将
醇>this
绑定到方法:
<ListView
dataSource={this.state.dataSource}
renderRow={this.renderMovie.bind(this)}
/>
- 您可以使用ES6胖箭
醇>
renderMovie = (product) => {
<TouchableHighlight
onPress={this._pressRow()}>
<View style={styles.container}>
<View style={styles.rightContainer}>
<Text style={styles.title}>{product.brand_domain}</Text>
<Text style={styles.year}>{product.product_name}</Text>
</View>
</View>
</TouchableHighlight>
}
和_pressRow
方法:
_pressRow(){
this.props.navigator.push({
title:'detail',
component:DetailView
})
}
答案 1 :(得分:1)
在ListView中声明renderRow函数时,应将其绑定到方法:
<ListView
dataSource={this.state.dataSource}
renderRow={this.renderMovie.bind(this)}
/>