React钩子无法从状态中获取价值

时间:2020-10-21 08:56:09

标签: reactjs react-hooks react-functional-component

有人可以给我一个解释,为什么这样的东西不起作用吗?

React.useEffect(() => {
  element.on('click', someOnClickFunction)
},[myState]) 

让我们说我单击了某个东西,并触发了someOnClickEvent,对于if语句,myState = undefined。 但是当我第二次单击并触发someOnClickEvent时,我希望第一次单击myState = e.target但实际上。第二次单击时myState仍未定义。我真的不明白为什么会这样。

像这样被解雇了

     React.useEffect(() => {

    new L.GeoJSON(getGeoJson(), {
      onEachFeature: function (feature, layer) {
        layer.on('click', onLayerClick);
        layer.on('pm:enable', onLayerEditingStart);
        layer.on('pm:disable', onLayerEditingDisable);
        layer.on('pm:update', onLayerEdited);
      }
    }).addTo(features).setStyle({weight: 8});
  }, [mapRef, selectedLayer]);


      let onLayerClick = (e) => {

      if(!(selectedLayer instanceof L.Marker)) { //need this if to have valueof selectedLayer
        selectedLayer.setStyle({color: '#3388ff', weight: 5})
      }
      console.log("selected before")
      console.log(selectedLayer) //undefined -- expected value from last click
      //selectedLayer = e.target;
      setSelectedLayer(e.target)
      console.log("selected after")
      console.log(selectedLayer) //still undefined -- expected value from state set 2 lines above.
  };

问题的特定代码:

e.stopPropagation()

1 个答案:

答案 0 :(得分:-1)

状态更改是异步的

要遵循它,您可以使用useEffect

React.useEffect(()=>{
    console.log("in useEffect ",myState)
},[myState])