renderTopicList(){
// console.log(this.props);
//console.log(this.state.dataSource);
return (
<ListView
style={Style.listView}
ref="listview"
pageSize={15}
dataSource={this.state.dataSource}
renderFooter={this.renderFooter}
renderRow={this.renderTopicListCell}
// onEndReached={this.onEndReached}
automaticallyAdjustContentInsets={false}
showsVerticalScrollIndicator={false}
/>
);
}
renderTopicListCell(data){
return (
<TopicListCell
onSelect = { () => this.selectTopic(data) }
data={data} />
);
}
selectTopic(data){
this.props.navigator.push({
title: '详细' + (data.replies_count ? '(' + data.replies_count.toString() + '条回复)' : ''),
component: TopicView,
passProps: {
data: data
}
});
}
在单元格中调用onSelect:<TouchableHighlight onPress={this.props.onSelect}/>
当我点击单元格时,它会给我以下错误:_this3.selectTopic不是一个函数。(在&#39; _this3.selectTopic(data)&#39;,&#39; _this3.selectTopic&#39 ;未定义)
答案 0 :(得分:1)
您可以通过两种方式解决此问题。
1)在组件构造函数中,您可以绑定要传递的函数。例如:
constructor() {
super();
// Binding the function
this.selectTopic.bind(this);
}
然后,您可以使用传递数据
renderTopicListCell(data){
return (
<TopicListCell
onSelect={this.selectTopic(data)}
data={data} />
);
}
2)您可以在传递函数时绑定该函数。
<TopicListCell onSelect={this.selectTopic.bind(this, data)} data={data} />
我更喜欢以前的方法,这样我在一个地方进行了所有绑定调用,并且我将绑定它一次。