function Box() {
const [state, setState] = useState({ left: 0, top: 0, width: 100, height: 100 }); // ...}// ...
useEffect(() => {
function handleWindowMouseMove(e) { // Spreading "...state" ensures we don't "lose" width and height
setState(state => ({ ...state, left: e.pageX, top: e.pageY }));
} // Note: this implementation is a bit simplified
window.addEventListener('mousemove', handleWindowMouseMove);
return () => window.removeEventListener('mousemove', handleWindowMouseMove);
}, []);// ...