@Nik_1011

Как поступить с дефолтным значением useState?

Здравствуйте. Подскажите,пожалуйста.

Ситуация такая: значение из useState сразу прокидывается в ссылку,да,всё верно,но не могу понять до сих пор как можно решить вопрос, чтобы в ссылку передавались значения из navigator.geolocation.getCurrentPosition.

Используя в useState null или [], выдает 2 ошибки указывающие на request errror, потом всё подгружается. Уже думаю может использовать let long = position.coords.latitude; в navigator, чистую ссылку поставить вместо "url" в axios и туда подставить "long".

Вот код:
function App() {
  const [data, setData] = React.useState({});
  const [location, setLocation] = React.useState('');

  const [lat, setLat] = React.useState(0); // Те самые значения
  const [long, setLong] = React.useState(0);

  const apiKey = '';

  React.useEffect(() => {
    const url = `https://api.openweathermap.org/data/2.5/weather?lat=${lat}&lon=${long}&units=metric&appid=${apiKey}`;

    const fetchData = async () => {
      navigator.geolocation.getCurrentPosition((position) => {
        setLat(position.coords.latitude);
        setLong(position.coords.longitude);
      });
      try {
        await axios.get(url).then((response) => {
          setData(response.data);
        });
      } catch (error) {
        alert('Failed to load resource');
        console.error(error);
      }
    };
    fetchData();
  }, [lat, long]);
  • Вопрос задан
  • 51 просмотр
Решения вопроса 1
@Nik_1011 Автор вопроса
Решил следующим образом: добавил await
await navigator.geolocation.getCurrentPosition((position)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы