Reactjs useState未更新

Reactjs useState未更新,reactjs,react-leaflet-draw,Reactjs,React Leaflet Draw,我有两个事件,onCreate和onDeleted,它们与在地图中绘制矩形有关。 除此之外,我还有一个表格,其中列出了矩形的坐标。此列表的源/数据是listGeofences 当我绘制一个新的矩形时,我使用setListGeofences更新listGeofences。这样做一切都正常,表也会按预期更新 问题出现在onDeleted事件中。例如,我画了三个矩形,当我在调试中观看constnewstate时,它总是空的。 注意:newState开始时已为空 提前谢谢 const [listGeof

我有两个事件,onCreate和onDeleted,它们与在地图中绘制矩形有关。 除此之外,我还有一个表格,其中列出了矩形的坐标。此列表的源/数据是listGeofences

当我绘制一个新的矩形时,我使用setListGeofences更新listGeofences。这样做一切都正常,表也会按预期更新

问题出现在onDeleted事件中。例如,我画了三个矩形,当我在调试中观看constnewstate时,它总是空的。 注意:newState开始时已为空

提前谢谢

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]);