Есть кастомный хук:
function useMap(mapRef, location) {
const [map, setMap] = useState(null)
useEffect(() => {
if (mapRef.current !== null && map === null) {
const instance = leaflet.createMap(mapRef, location)//упрощенный код
setMap(instance)
}
}, [map, location])
return map;
}
Данный хук вызывается в компоненте, у которого есть пропсы которые приходят с сервера.
function Map({ location }) {
const mapRef = useRef(null)
const map = useMap(mapRef, location)
return (
<div
ref={mapRef}
style={{ height: height }}
/>
)
}
Беда в следующем: после первого рендера компонента в useMap вызывается этот треклятый setMap. Следующие рендеры этого компонента происходят практически сразу же(так как location приходит с сервера быстро). И в этом же хуке useMap Map остается равен null, а не тому что мы передали при прошлом рендере в setMap. Cпустя какое-то время Map все-таки обновляется, но это может произойти и на 2, и на 3, и на 4 рендере. В моей голове было понимание, что setState, если был вызван на прошлом ренедере, на следующем точно принимает значение переданное в этот setState.
Спасибо за любую помощь. Второй день бьюсь в поисках ответа, поэтому прошу понять кашу в моей голове.