Ich versuche, eine Funktion von ComponentDidMount() aufzurufen, nachdem getCurrentPosition() aufgerufen wird. Wenn ich die Position an updatePosition überlasse, stürzt die App ab. Wenn ich den Inhalt der Funktion updatePosition in getCurrentPosition() verschiebe, funktioniert es. Was muss ich tun, um eine Memberfunktion von componentDidMount() aufrufen zu können?Wie rufe ich eine Member-Funktion von ComponentDidMount
class GeolocationViewer extends Component {
constructor(props) {
super(props);
this.state = {
lat: 0,
long: 0,
heading: 0,
accuracy: 0,
speed: 0,
pointCount: 0
};
}
updatePostion(position) {
var lat = position.coords.latitude;
this.setState({lat});
}
componentDidMount() {
let self = this;
setInterval(() => {
navigator.geolocation.getCurrentPosition((position) => {
// this breaks
this.updatePostion(position);
// if I place the body of updatePosition here it works.
},
(error) => {},
{enableHighAccuracy: true, timeout: 20000, maximumAge: 10000}
);
}, 5000);
}
render() {
return (
<View style={{flex: 1, backgroundColor: 'black'}}>
<View style={{flex: 1, color: 'green'}}>
<Text style={styles.green}>
Position: {this.state.lat}, {this.state.long}
</Text>
<Text style={styles.green}>
Heading: {this.state.heading}
</Text>
<Text style={styles.green}>
Speed: {this.state.speed}
</Text>
<Text style={styles.green}>
Accuracy: {this.state.accuracy}
</Text>
<Text style={styles.green}>
Point Count: {this.state.pointCount}
</Text>
</View>
</View>
);
}
}
Das war mir unvorsichtig zu sein, wenn die Frage der Veröffentlichung. Ich habe immer noch den Fehler selbst mit dem aktualisierten Code (Ich habe den Post bearbeitet). –
Welchen Fehler hast du genau? Btw, Sie haben einen Tippfehler im Funktionsnamen: updatePo * sti * on (Position statt Position). Vielleicht definieren Sie in Ihrem realen Code die Funktion als updatePosition, rufen sie aber mit falschem Namen auf? –