嗨,我是个新手,所以请耐心等待。我想将地理位置存储为一个州。看起来不错,因为任何位置的变化都会触发渲染,这正是我想要的。在开发过程中,我有一个通过访问lastPosition
手动触发事件的按钮。但当我这么做的时候。状态是“未定义的”。有什么线索吗?
export default class FetchProject extends Component {
constructor(props) {
super(props);
this.state = {
initialPosition: 'unknown',
lastPosition: 'unknown',
};
}
//code that sets lastposition
componentDidMount() {
....
}
_onPressGET (){
console.log("PressGET -> " + this.state); //undefined
var northing=this.state.initialPosition.coords.latitude;
//triggers error
}
render() {
return (
<View style={styles.container}>
<TouchableHighlight onPress = {this._onPressGET} style = {styles.button}>
<Text>Fetch mailbox</Text>
</TouchableHighlight>
</View>
);
}
}
发布于 2016-10-31 19:11:49
在RN中使用ES6类时,注意绑定this
- this
可能不是您想的那样,除非您绑定它。
onPress = { this._onPressGet.bind(this) }
或在构造函数中
constructor(props) {
super(props);
this.state = {
initialPosition: 'unknown',
lastPosition: 'unknown'
};
this._onPressGet = this._onPressGet.bind(this);
}
或者也许是最优雅的方式
_onPressGet = () => {
// Function body
}
按照从最低到最高的顺序。
https://stackoverflow.com/questions/40340958
复制相似问题