我有这个简单的代码。
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
两次)。) 为什么会这样呢?