【发布时间】:2015-06-14 11:45:30
【问题描述】:
根据本地测试,“this”在行渲染函数中似乎为空。因此,这会阻止我在 onPress 属性上绑定本地函数。
我有这个渲染块:
render() {
return (
<ListView
dataSource={this.state.dataSource}
renderRow={this._renderRow}
renderHeader={this._renderHeader}
style={styles.listView} />
);
}
还有一个局部函数
_visitEntryDetail() {
console.log('test');
}
然后行渲染
_renderRow(something) {
return (
<TouchableHighlight
style={[styles.textContainer, filestyle.container]}
onPress={this._visitEntryDetail.bind(this)} >
<View>
<Text style={filestyle.text1} >{something.detail}</Text>
<Text style={filestyle.text2} >{something.size}, {something.timestamp}</Text>
</View>
</TouchableHighlight>
);
}
这会返回
message: null is not an object (evaluating 'this.$FileList_visitEntryDetail')"
在将上面的代码替换为以下代码时,在 renderRow 上检查“this”返回 null:
_renderRow(file) {
console.log(this);
return (
<TouchableHighlight
style={[styles.textContainer, filestyle.filelistcontainer]}
>
带有以下控制台输出:
RCTJSLog> null
不过没关系
render() {
console.log('inside render. this value is below me');
console.log(this);
return (
<ListView
控制台
RCTJSLog> "inside render. this value is below me"
RCTJSLog> [object Object]
有人可以指出是什么原因造成的。谢谢。
【问题讨论】:
-
通过以下方式使上面的代码工作:renderRow={(file) =>
标签: listview this react-native