I'm trying to make a draggable React component, and the code always manages to reach the 'removing listeners' block, but afterwards the component continues sticking to my mouse, so definitely I've screwed up the removing listeners step, though I'm not sure how--surely the two functions I've passed into document.add/removeEventListener are the same?
useEffect(() => {
if (dragging && !prevDragging) {
document.addEventListener("mousemove", onMouseMove)
document.addEventListener("mouseup", onMouseUp)
} else if (!dragging && prevDragging) {
console.log('removing listeners')
document.removeEventListener("mousemove", onMouseMove)
document.removeEventListener("mouseup", onMouseUp)
}
}
)
const onMouseMove = (e) => {
if (!dragging) return;
setPos({
x: e.pageX - rel.x,
y: e.pageY - rel.y
});
e.stopPropagation();
e.preventDefault();
}
const onMouseUp = (e) => {
setDragging(false);
e.stopPropagation();
e.preventDefault();
}