Draggable does not work as intended in 4.4.6. (Normal operation in 4.4.5)
In version 4.4.6, the mouse leaves the draggable component.
When not to use state
import { useRef } from "react";
import Draggable from "react-draggable";
import "./App.css";
function App() {
const nodeRef = useRef<HTMLDivElement>(null);
return (
<Draggable handle={`.handler`} nodeRef={nodeRef}>
<div ref={nodeRef} style={{ width: "500px" }}>
<div className="handler" style={{ backgroundColor: "gray" }}>
React Draggable 4.4.6
</div>
<div>Body</div>
</div>
</Draggable>
);
}
export default App;
4.4.6 https://github.com/react-grid-layout/react-draggable/assets/59780565/3594f5b5-9b4e-4659-aefd-6a5f60205037
4.4.5 https://github.com/react-grid-layout/react-draggable/assets/59780565/b7e8384d-1707-4f68-ad00-cc71affd61f0
When to use states
import { useCallback, useRef, useState } from "react";
import Draggable, { DraggableData, DraggableEvent } from "react-draggable";
import "./App.css";
function App() {
const nodeRef = useRef<HTMLDivElement>(null);
const [position, setPosition] = useState({ x: 0, y: 0 });
const handleDrag = useCallback((e: DraggableEvent, data: DraggableData) => {
setPosition({ x: data.x, y: data.y });
console.log(data);
}, []);
return (
<Draggable
handle={`.handler`}
nodeRef={nodeRef}
position={position}
onDrag={handleDrag}
>
<div ref={nodeRef} style={{ width: "500px" }}>
<div className="handler" style={{ backgroundColor: "gray" }}>
React Draggable 4.4.6
</div>
<div>Body</div>
</div>
</Draggable>
);
}
export default App;
4.4.6 with console log https://github.com/react-grid-layout/react-draggable/assets/59780565/a41c47d3-7793-4c68-bae1-f043297eaa22
4.4.5 with console log https://github.com/react-grid-layout/react-draggable/assets/59780565/04ce9bb2-1aab-43a8-84ff-aea73a704178
Seems related to this: #2003
I'm experiencing this exact same issue. Downgrading the library to 4.4.5 seems to fix it. I'm using React 18.3.1. Are there some breaking changes required after upgrading to 4.4.6?
@STRML Are you sure this is not an issue as you suggested in #756?