Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

123
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda