У меня есть функциональный родительский компонент Map
с несколькими состояниями, одним из которых является layers
, значение которого изначально устанавливается из конфигурации.
Затем у меня есть дочерний компонент LayerControl
, который принимает состояние слоев карты в качестве реквизита.Компонент LayerControl вносит некоторые изменения и передает их обратно на карту с помощью onLayerChange
, который затем вызывает метод слоев setState (setLayers
).
Насколько я понимаю, это должно вызвать повторную визуализацию моего компонента LayerControl, но это не так.Что я сделал не так?
export default function Map(){
const [viewport, setViewport] = useState(mapConfig.viewport);
const [style, setStyle] = useState(mapConfig.mapStyle);
const [layers, setLayers] = useState(mapConfig.layers);
function updateLayers(layers){
setLayers(layers); //why won't LayerControl re-render?
}
return(
<MapGL
zoom={[viewport.zoom]}
containerStyle={{
height: "100%",
width: "100%"
}}
style={style}>
<LayerControl
onLayerChange={layers => updateLayers(layers)}
layers={layers}
/>
<ZoomControl/>
<ScaleControl/>
</MapGL>
);
}