【发布时间】:2021-04-28 09:37:17
【问题描述】:
我正在事件处理函数中更新状态(向状态数组添加新对象)。
const handleIncomingData = (data) => {
setState(state => {
var _state = state
if (_state.someDummyStateValue === 1234) {
_state.arr.push({ message: data.message })
}
return _state
})
}
React.useEffect(() => {
socket.on('data', handleIncomingData)
return()=>{
socket.off('data', handleIncomingData)
}
},[])
我正在以这种方式更新状态,因为事件处理函数无法访问最新的状态值。 console.log(state) 显示更新状态,但重新渲染后不显示新添加的对象。同样,当再次触发相同的事件时,会显示先前接收到的数据,但不会显示最新的数据。以这种方式更新状态有什么问题吗?
【问题讨论】:
标签: javascript reactjs react-state