У меня есть 2 родственных компонента в 1 родительском компоненте. Это так:
import React, { useState } from 'react';
import PlaceSearchInput from './PlaceSearchInput';
import { GoogleMap, withGoogleMap } from "react-google-maps";
export default function Search(props) {
const [mapCenter, setMapCenter] = useState({lat:3, lng:2});
function Map() {
return (
<div>
<GoogleMap defaultZoom={10} center={mapCenter}/>
</div>
)
}
const WrappedMap = withGoogleMap(Map);
if (!props.isGoogleMapApiReady)
return (
<div>Loading...</div>
)
return (
<div style={{ margin: "100px" }}>
<div style={{ height: "50vh", width: "50vh" }}>
<WrappedMap
loadingElement={<div style={{ height: "100%" }} />}
containerElement={<div id="map" style={{ height: "100%" }} />}
mapElement={<div style={{ height: "100%" }} />}
/>
<PlaceSearchInput setMapCenter={setMapCenter} />
</div>
</div>
)
}
Я хочу, чтобы Ввод установил координаты, а Карта показывает координаты. Я знаю, что один из способов состоит в том, чтобы иметь координаты в родительском состоянии, а затем передать функцию set в Input, координаты в Map. Но таким образом я обнаружил это всякий раз, когда состояние изменяется компонентом Input, хотя Map действительно перемещается в новые координаты, Map обновляется, и это то, чего я хочу избежать. Есть ли способ решить это?