React Native - Problema com Hooks

06/10/2021

0

Estou tentado passar as variáveis do useState latitude e longitude porém o valor passado é sempre 0. Mas quando dou um console.log aparece as coordenadas certinho. O que poderia estar acontecendo? Eu sei que o valor 0 é o que está no parâmetro do useState.

import React, { useEffect, useState } from "react";
import { View } from "react-native";
import MapView from 'react-native-maps';
import * as Location from 'expo-location';
import AlertArea from "./AlertArea";
import styles from "./style";

export default function Maps(){

    const [latitude, setLatitude] = useState(0)
    const [longitude, setLongitude] = useState(0)
    const [errorMsg, setErrorMsg] = useState(null)

    useEffect(() =>{
        (async () => {
            let { status } = await Location.requestForegroundPermissionsAsync()

            if(status !== 'granted'){
                setErrorMsg('Permission to access location was denied')
                return
            }

            let location = await Location.getCurrentPositionAsync({})

            let latitude = JSON.parse(location.coords.latitude)
            let longitude = JSON.parse(location.coords.longitude)

            setLatitude(latitude)
            setLongitude(longitude)
        })()
    },[])

    console.log(latitude)
    console.log(longitude)

    return(
        <View style={styles.content}>
            <MapView style={styles.map} initialRegion={{
                latitude: latitude,
                longitude: longitude,
                latitudeDelta: 0.0122,
                longitudeDelta: 0.0121,
            }} showsUserLocation></MapView>
            <AlertArea/>
        </View>
    )
}
Gabriel Araujo

Gabriel Araujo

Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar