我希望通过NavigatorIOS中的函数Push
push()
到新的Component。这就像是:
renderRow(rowData, sectionID, rowID) {
var imgSource = IMAGE_URLS[rowID];
return (
<TouchableHighlight onPress = {() => {
this.props.navigator.push({
title: 'test',
component: example,
});
}}>
<View>
<View style={styles.row}>
<Image
source={imgSource}
style={styles.thum}
/>
<Text style={styles.text}>
{rowData}
</Text>
</View>
</View>
</TouchableHighlight>
);
}
但是当我点击TouchableHighlight
时会出错。
答案 0 :(得分:2)
这不是绑定到renderRow()内部的类。
您必须在构造函数中绑定this
:
this.renderRow = this.renderRow.bind(this);
或在render方法中:
render() {
var navStatusBarConfig = {
style: 'light-content',
}
return (
<View style={{ flex: 1, backgroundColor: '#F5FCFF'}}>
<View styles={styles.nav}></View>
<ListView
automaticallyAdjustContentInsets={false}
contentContainerStyle={styles.list}
dataSource={this.state.dataSource}
pageSize={4}
renderRow={this.renderRow.bind(this)}
/>
</View>
);
}
}
至于为什么,原因如下:
https://facebook.github.io/react/blog/2015/01/27/react-v0.13.0-beta-1.html#autobinding
还有一个更完整的博客,关于如何绑定this
[有很多,博客和方法来绑定它]):
http://blog.andrewray.me/react-es6-autobinding-and-createclass/