Вы инициализируете geoData как массив пустых []
Вы должны инициализировать:
const [geoData, setGeoData] = useState({lat:null,lng:null});
И взамен вашего компонента вы должны изменить этот маркер только для рисования, когда geoData lat и lng отличаются от нуля (это было бы, когда вы получаете данные в ответном топоре ios):
return (
<div>
<Map center={[52.6376, -1.135171]} zoom={12}>
<TileLayer
url="https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png"
attribution='© <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
/>
{geoData.lat && geoData.lng && <Marker position={[geoData.lat, geoData.lng]} />}
</Map>
И в useEffect
я рекомендую вам использовать обещание с then
и catch
для улучшения Пользовательский опыт. Только в этом случае вы должны использовать setGeoData
и перезаписывать свойства lat
и lng
useEffect(() => {
axios.get(
"https://api.opencagedata.com/geocode/v1/json?q=United%20States&key={accessToken}&language=en&pretty=1"
).then(response => {
// I expect in response object geometry, change by the correct route
setGeoData(response.data.geometry);
}).catch(err => {
console.log("error",err);
});
}, []);
-------- СЛЕДУЮЩИЙ ВОПРОС --------
Если вы хотите редактировать стили карты.
Как вы можете видеть в документах в React-Leaflet: Ссылка здесь
Вы можете добавить реквизиты, такие как className или style.
Результатом будет
<Map style={{width:"400px",height:"600px"}}>
...