Reactjs useState未更新
我有两个事件,onCreate和onDeleted,它们与在地图中绘制矩形有关。 除此之外,我还有一个表格,其中列出了矩形的坐标。此列表的源/数据是listGeofences 当我绘制一个新的矩形时,我使用setListGeofences更新listGeofences。这样做一切都正常,表也会按预期更新 问题出现在onDeleted事件中。例如,我画了三个矩形,当我在调试中观看constnewstate时,它总是空的。 注意:newState开始时已为空 提前谢谢Reactjs useState未更新,reactjs,react-leaflet-draw,Reactjs,React Leaflet Draw,我有两个事件,onCreate和onDeleted,它们与在地图中绘制矩形有关。 除此之外,我还有一个表格,其中列出了矩形的坐标。此列表的源/数据是listGeofences 当我绘制一个新的矩形时,我使用setListGeofences更新listGeofences。这样做一切都正常,表也会按预期更新 问题出现在onDeleted事件中。例如,我画了三个矩形,当我在调试中观看constnewstate时,它总是空的。 注意:newState开始时已为空 提前谢谢 const [listGeof
const [listGeofences, setListGeofences] = useState([]);
const onCreated = useCallback((e: { layerType: any; layer: any; }) => {
var p1 = e.layer._latlngs[0][0];
var p2 = e.layer._latlngs[0][2];
let g: Geofence = new Geofence();
g.xMin = p1.lat;
g.yMax = p1.lng;
g.xMax = p2.lat;
g.yMin = p2.lng;
g.id = e.layer._leaflet_id;
const arr = [];
listGeofences.forEach(element => {
arr.push(element);
});
arr.push(g);
setListGeofences(arr as any);
}, [listGeofences]);
const onDeleted = useCallback((e: { layers: { eachLayer: (arg0: (layer: any) => void) => void; }; }) => {
const newState: Geofence[] = [...listGeofences];
e.layers.eachLayer((layer) => {
let index: number = newState.findIndex(x => x.id == layer._leaflet_id);
if (index != -1) {
newState.splice(index, 1);
}
});
setListGeofences(newState as any);
}, [listGeofences]);