function App(){
const [listState, setListState] = useState([]);
let connectWebsocket = () => {
let ws = new WebSocket(`ws://${window.location.host}/ws`);
ws.onmessage = (event) => {
let data = JSON.parse(event.data);
setListState([...listState, data]);
};
}
useEffect(() => {
console.log(listState); // Problem: This always logs empty array.
}, [listState]);
useEffect(() => {
connectWebsocket();
}, []);
return (
<div>
</div>
);
}
When I update state in nested functions, the state is updated to an initial value. How to fix this problem?