Cat*_*tla 6 javascript reactjs react-native
当我放入onPress地图循环时,它不起作用.怎么解决?
var PageOne = React.createClass({
_handlePress() {
this.props.navigator.push({id: 2,});
},
render () {
return (
<View>
<TouchableOpacity onPress={this._handlePress}> //work here
<Text> One </Text>
</TouchableOpacity>
<View style={styles.albums}>
{
list.map(function(item, index){
return (
<TouchableOpacity key={index} onPress={this._handlePress}> //doesn't work hehre
<Text>{item}</Text>
</TouchableOpacity>
)
})
}
</View>
</View>
);
}
});
Run Code Online (Sandbox Code Playgroud)
this 指的是错误的上下文,你需要将范围设置为词法绑定,这就是胖箭头功能将为你做的事情.
尝试像这样调用你的函数:
onPress={ () => this._handlePress() }
Run Code Online (Sandbox Code Playgroud)
此外,您需要将map函数绑定到正确的上下文,如下所示:
<View style={styles.albums}>
{
list.map(function(item, index){
return (
<TouchableOpacity key={index} onPress={() => this._handlePress()}>
<Text>{item}</Text>
</TouchableOpacity>
)
}.bind(this))
}
</View>
Run Code Online (Sandbox Code Playgroud)
或者像这样:
<View style={styles.albums}>
{
list.map((item, index) => {
return (
<TouchableOpacity key={index} onPress={() => this._handlePress()}>
<Text>{item}</Text>
</TouchableOpacity>
)
})
}
</View>
Run Code Online (Sandbox Code Playgroud)
我在这里建立了一个工作项目.
https://rnplay.org/apps/_PmG6Q
| 归档时间: |
|
| 查看次数: |
7702 次 |
| 最近记录: |