Я использую реагирующую навигацию 3 и у меня есть 2 экрана: дома и карты; на экране карт я получаю текущее местоположение пользователя следующим образом:
componentWillMount() {
this.getCurrrentLcation()
}
getCurrrentLcation (){
this.watchID = navigator.geolocation.watchPosition(
position => {
const { coordinate, routeCoordinates, distanceTravelled } = this.state;
const { latitude, longitude } = position.coords;
const newCoordinate = {
latitude,
longitude
};
this.setState({
latitude,
longitude,
routeCoordinates: routeCoordinates.concat([newCoordinate]),
distanceTravelled:
distanceTravelled + this.calcDistance(newCoordinate),
prevLatLng: newCoordinate
});
},
error => console.log(error),
{ enableHighAccuracy: true, timeout: 20000, maximumAge: 1000 }
);
}
при первом переходе кНа экране карт вызывается функция getCurrentLocation, и он работает нормально, но когда я нажимаю кнопку «Назад» и снова перехожу к экрану карт, он не показывает текущее местоположение, я думаю, что вызов getCurrentLocation не вызывается.
App.js
const RootStack = createStackNavigator(
{
Home: HomeScreen,
Maps: Maps,
},
{
initialRouteName: 'Home',
}
);
const Container= createAppContainer(RootStack);
export default class App extends React.Component {
render() {
return <Container/>;
}
}
HomeScreen.js
class HomeScreen extends Component {
render() {
return (
<View style={styles.container}>
<TouchableOpacity onPress={()=>this.props.navigation.push('Maps')}>
<Text>Go to Maps</Text>
</TouchableOpacity>
</View>
);
}
}