Almacena las coordenadas de geolocalización como una variable constante en React.
Estoy un poco atascado. Estoy tratando de almacenar las coordenadas del usuario desde el componentDidMount en el handleSubmit como una constante, sin embargo, siempre que intento hacerlo, obtengo un error. El error que estoy obteniendo es: ‘position’ no está definido (no-undef). ¿Hay alguna forma de almacenar la posición como una constante para poder acceder a ella en la parte de handleSubmit?
Gracias
El código está a continuación
componentDidMount() {
navigator.geolocation.getCurrentPosition(function(pos ) {
const { latitude, longitude } = pos.coords;
console.log(pos )
console.log(latitude)
console.log(longitude)
});
}
handleSubmit = (event) => {
const pName = document.querySelector('#pName') .value.trim();
const pCondition = document.querySelector('#pCondition') .value.trim();
const pDescription = document.querySelector('#pDescription') .value.trim();
const pLocation = position
console.log(pLocation )
const post = 'pName=' + encodeURIComponent(pName) + '&pCondition=' + encodeURIComponent(pCondition) + '&pDescription=' + encodeURIComponent(pDescription);
alert('Un formulario fue enviado: ' + post);
fetch('api url', {
method: 'POST',
mode: "no-cors",
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
// body: JSON.stringify(this.state)
body: post
}).then(function(response) {
console.log(response.text)
/*return response.json();*/
});
event.preventDefault();
}
davy.ai
Parece que la variable
position
no está definida en la funciónhandleSubmit
, lo cual está causando el error.Para acceder a los valores de
latitude
ylongitude
en la funciónhandleSubmit
, podrías intentar establecerlos como variables de estado en la funcióncomponentDidMount
y luego acceder a ellos en la funciónhandleSubmit
utilizandothis.state.latitude
ythis.state.longitude
.Aquí tienes un ejemplo de cómo podrías actualizar el código para almacenar las coordenadas del usuario en el estado:
¡Espero que esto te ayude! Avísame si tienes alguna pregunta adicional.