我有这段简单的代码:
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');
};
}, []);
一切都按照预期运行,但由于某种原因,
something
回调函数会触发一次(打印了ONE
一次),但在设置状态时,setState
回调被调用了两次(它打印了TWO
两次)。这是为什么?