我正在构建一个基本的可视化系统,可以从控制框切换图层。我
layers
将各个图层合并为一个。
const [layers, setLayers] = useState([densityLayer, pedestrianLayer]);
我有filterState
跟踪控制框中的活动。它包含图层对象作为linkTo
const [filterState, setFilterState] = useState([
{
id: 'densityFilter',
checked: true,
description: 'Population density',
linkedTo: densityLayer
},
{
id: 'pedestrianFilter',
checked: true,
description: 'Pedestrian volume',
linkedTo: pedestrianLayer
}
]);
并且每次检查的属性filterState
被更新时,它都会启动renderLayers()
,它将选择checked
属性为true
.
useEffect(()=>{
renderLayers();
},[filterState]);
const renderLayers = () => {
const newLayers = [];
filterState.map(filter => (filter.checked && newLayers.push(filter.linkedTo)));
setLayers(newLayers);
}
然后作为图层道具layers
传递给组件。DeckGL
<DeckGL
initialViewState={viewState}
controller={true}
layers={layers}
>
在我的程序中,关闭图层可以正常工作,但它们不会重新打开。在控制台中,我注意到层之间的生命周期是不同的。我的方法有什么不正确的地方吗?