我是反应原生的新手,我正在尝试使用地理位置来更新状态。
在componentDidMount()中,我可以调用this.setState({lat: 1});
并且它可以工作。但是,如果我从geolocation.getCurrentPosition()回调中调用this.setState({lat: 1});
,则应用程序崩溃。我正在测试物理设备。
我已经剥离了所有东西以隔离问题。非常感谢任何帮助。
这是我的代码:
import React, { Component } from 'react';
import { AppRegistry,ScrollView, ListView, Text, View } from 'react-native';
class TestProject extends Component {
constructor(props) {
super(props);
this.state = {
lat: 0
};
}
componentDidMount() {
navigator.geolocation.getCurrentPosition(function(position) {
this.setState({lat: 1}); // this causes a crash - without this line the app does not crash.
},
(error) => alert(error.message)
);
this.setState({lat: 1}); // this works
}
render() {
return (
<View>
<Text>
{this.state.lat}
</Text>
</View>
);
}
}
AppRegistry.registerComponent('TestProject', () => TestProject);
答案 0 :(得分:-1)
感谢@Phil,我只需要设置self = this
:
let self = this;
navigator.geolocation.getCurrentPosition(function(position) { self.setState({ lat: 1 }); }, (error) => alert(error.message) );