-
Notifications
You must be signed in to change notification settings - Fork 33
Open
Labels
bugSomething isn't workingSomething isn't working
Description
Consider the following example:
import Splitter from "@devbookhq/splitter";
import { useState, useCallback } from "react";
function MyComponent() {
const [count, setCount] = useState(0);
const handleClick = useCallback(() => setCount(count + 1), [count]);
return (
<Splitter>
<div onClick={handleClick}>Click me</div>
<div>{count}</div>
</Splitter>
);
}Background
A component which renders a splitter with two children.
The component has a state - a counter.
When the user clicks the first child of the splitter, the counter is incremented.
The second child of the splitter renders the counter.
Reproduction steps
- After the component is rendered, grab the splitter and move it to a new location
- Click on the "Click me" child of the splitter
Observed behavior with splitter 1.3.2
The splitter snaps back to its initial location and the counter rendered in the second child goes up.
Observed behavior with 1.2.4
The splitter maintains its current position and the counter rendered in the second child goes up.
I believe the issue is caused by this:
https://github.com/DevbookHQ/splitter/blob/master/src/index.tsx#L358
The useEffect hook is called whenever the children of the splitter change, which leads to the splitter snapping back to its initial location.
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working