根据许多示例,这应该有效:
const [_timeseries, $timeseries] = useState({hi:'lol'})
useEffect(() => {
socket.on('plot', e => {
let keyname = Object.keys(e)[0]
$timeseries({..._timeseries, [keyname] : value)})
}
}, [])
console.log(_timeseries) // here results in the initial state, not the set state
第一次合并时,它可以工作。但是一旦一个带有另一个键名的新事件进入,它就会再次替换整个事件。不是使用 [keyname] 添加新密钥,而是替换旧的 [keyname]。