The*_*ato 4 javascript callback socket.io reactjs react-hooks
我有这个简单的代码:
const [state, setState] = useState([]);
useEffect(() => {
socket.on('something', data => {
console.log('ONE');
setState(old => {
console.log('TWO');
const newArr = [...old];
// do something to newArr
return newArr;
});
});
return () => {
socket.off('something');
};
}, []);
Run Code Online (Sandbox Code Playgroud)
一切都按预期工作,但由于某种原因something回调触发一次(ONE打印一次),但在我设置状态时,setState回调被调用两次(打印TWO两次)。这是为什么?