function Toggle({ onChange }) { | |
const [isOn, setIsOn] = useState(false); | |
function updateToggle(nextIsOn) { | |
// ✅ Good: Perform all updates during the event that caused them | |
setIsOn(nextIsOn); | |
onChange(nextIsOn); | |
} | |
function handleClick() { | |
updateToggle(!isOn); | |
} | |
function handleDragEnd(e) { | |
if (isCloserToRightEdge(e)) { | |
updateToggle(true); | |
} else { | |
updateToggle(false); | |
} | |
} | |
// ... | |
} |