Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

126
Visualizações
Cuando bloqueo el sitio, todavía puedo ver la geolocalización del navegador usando Reactjs

Cuando permito que el navegador obtenga la geolocalización al hacer clic en el botón, puedo ver la latitud y la longitud. Pero cuando bloqueo el sitio para acceder a la ubicación, aparece "No se puede recuperar su ubicación" y también la latitud y la longitud ... Aquí, cuando bloqueo el sitio, solo debería recibir el mensaje "No se puede recuperar su ubicación" y Latitud y la longitud no deberían mostrarse... Encuentre también la captura de pantalla ingrese la descripción de la imagen aquí

Aquí está mi código

 const GeolocationButton = () => { const [lat, setLat] = useState(null); const [lng, setLng] = useState(null); const [status, setStatus] = useState(null); const getLocation = () => { if (!navigator.geolocation) { setStatus('Geolocation is not supported by your browser'); } else { setStatus('Please allow brower to access your Location'); navigator.geolocation.getCurrentPosition((position) => { setStatus(null); setLat(position.coords.latitude); setLng(position.coords.longitude); }, () => { setStatus('Unable to retrieve your location'); }); } } return ( <div className="App"> <button onClick={getLocation}>Get Location</button> <h1>Coordinates</h1> <p>{status}</p> {lat && <p>Latitude: {lat}</p>} {lng && <p>Longitude: {lng}</p>} </div> ); } export default GeolocationButton
about 4 years ago · Santiago Gelvez
1 Respostas
Responde à pergunta

0

lat y lng son variables de estado, y el estado es, bueno, persistente. En consecuencia, cuando estableces lat y lng , conservan esos valores, incluso si luego bloqueas el acceso a los datos de ubicación.

Hay varias formas de resolver:

  1. Dado que status , lat y lng son todos interdependientes, utilice una sola variable de estado para almacenar los tres. Este enfoque es el que mejor se da cuenta de la relación dependiente entre las variables.

     const GeolocationButton = () => { // could also initialize location to `{}` const [location, setLocation] = useState({status:null,lat:null,lng:null}); const getLocation = () => { if (! navigator.geolocation) { // don't spread previous state into new state, and // no need to explicitly set location.lat & .lng setLocation({ status: 'Geolocation is not supported by your browser', }); } else { …
  2. Al configurar el status , configure también lng y lat . Esto no implementa explícitamente la interdependencia entre variables, por lo que requiere más disciplina por parte del programador.

     if (! navigator.geolocation) { setStatus('Geolocation is not supported by your browser'); setLat(null); setLng(null); } else { // note: there's a typo in "browser" in the question sample setStatus('Please allow browser to access your Location'); setLat(null); setLng(null); …
  3. Al obtener la ubicación, inicialice lat y lng en null :

     const getLocation = () => { setLat(null); setLng(null);
  4. Al mostrar lat y lng , verifique que el status no esté establecido (también debe verificar status antes de mostrarlo):

     {status && <p>{status}</p>} {!status && lat && <p>Latitude: {lat}</p>}
about 4 years ago · Santiago Gelvez Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda