【发布时间】:2021-02-04 03:56:09
【问题描述】:
谁能给我解释一下为什么这样的东西不起作用?
const [myState, setState] = React.useState<any>(undefined);
let someOnClickFunction = (e) => {
console.log(myState) //undefined on second click
if(myState !== e.target) { //error myState is undefined
console.log("State is different from event")
}
setState(e.target)
}
假设我单击某些东西并触发 someOnClickEvent,myState = undefined for if 语句。 但是,当我第二次单击并触发 someOnClickEvent 时,我希望 myState = e.target 从第一次单击开始,但实际上。 myState 在第二次单击时仍未定义。我真的不明白为什么会这样。
它有点像这样被解雇:
React.useEffect(() => {
element.on('click', someOnClickFunction)
},[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.
};
【问题讨论】:
-
能否提供更完整的代码sn-p?
-
请显示更多代码
-
好的,实际代码与原问题有很大不同。见stackoverflow.com/questions/54069253/…——你需要在设置状态后继续使用
e.target(它不会立即改变。)
标签: reactjs react-hooks react-functional-component