fixed code v2
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
import { useCallback, useEffect, useRef, useState } from "react";
|
||||
|
||||
const YANDEX_GEOCODER_API_KEY = import.meta.env.VITE_YANDEX_GEOCODER_KEY;
|
||||
const YANDEX_GEOCODER_API_KEY = process.env.REACT_APP_YANDEX_GEOCODER_KEY;
|
||||
|
||||
export function useYandexMap(enabled, initialCoords = null, initialAddress = "") {
|
||||
const mapRef = useRef(null);
|
||||
@@ -21,8 +21,6 @@ export function useYandexMap(enabled, initialCoords = null, initialAddress = "")
|
||||
)
|
||||
.then(r => r.json())
|
||||
.then(data => {
|
||||
// Игнорируем ответ, если пришёл более новый запрос — иначе
|
||||
// устаревший ответ может перезаписать адрес актуальных координат.
|
||||
if (requestId !== requestIdRef.current) return;
|
||||
|
||||
const found =
|
||||
@@ -104,7 +102,12 @@ export function useYandexMap(enabled, initialCoords = null, initialAddress = "")
|
||||
placemarkRef.current = null;
|
||||
initializedRef.current = false;
|
||||
};
|
||||
}, [enabled, initialCoords, resolveAddress]);
|
||||
// initialCoords намеренно не в deps — нужен только при первой инициализации,
|
||||
// а initializedRef защищает от повторного запуска. Объект initialCoords
|
||||
// пересоздаётся на каждый рендер родителя, поэтому включение его в deps
|
||||
// приводило бы к пересозданию карты на каждый ввод в форме.
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
}, [enabled, resolveAddress]);
|
||||
|
||||
return { mapRef, coords, address, addressRef };
|
||||
}
|
||||
Reference in New Issue
Block a user