Reactjs 无法从状态获取值
有人能给我解释一下为什么这样的东西不起作用吗Reactjs 无法从状态获取值,reactjs,react-hooks,react-functional-component,Reactjs,React Hooks,React Functional Component,有人能给我解释一下为什么这样的东西不起作用吗 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 consol
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)
}
问题的特定代码:
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.
};
状态更改是异步的 要遵循它,可以使用useEffect
React.useEffect(()=>{
console.log("in useEffect ",myState)
},[myState])
你能提供一个更完整的代码片段吗?请显示更多的代码好的,实际的代码与原始问题非常不同。请参阅–设置状态后,您需要继续使用
e.target
(不会立即更改)
React.useEffect(()=>{
console.log("in useEffect ",myState)
},[myState])