Skip to content

Commit 97a0227

Browse files
committed
fix: use ref directly in react19
1 parent d7b2538 commit 97a0227

File tree

1 file changed

+7
-1
lines changed

1 file changed

+7
-1
lines changed

src/index.tsx

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ const eventTypeMapping = {
3333
touchend: 'onTouchEnd'
3434
};
3535

36+
const reactMajorVersion = parseInt(React.version.split('.')[0], 10);
37+
3638
function useForkRef<T = any>(
3739
...refs: Array<Ref<T> | undefined>
3840
): RefCallback<T> {
@@ -88,6 +90,10 @@ const ClickAwayListener: FunctionComponent<Props> = ({
8890
node.current = ref;
8991
}, (children as any).ref);
9092

93+
const handleReact19ChildRef = (instance: HTMLElement | null) => {
94+
node.current = instance;
95+
};
96+
9197
useEffect(() => {
9298
const nodeDocument = node.current?.ownerDocument ?? document;
9399

@@ -122,7 +128,7 @@ const ClickAwayListener: FunctionComponent<Props> = ({
122128

123129
return React.Children.only(
124130
cloneElement(children as ReactElement<any>, {
125-
ref: combinedRef,
131+
ref: reactMajorVersion >= 19 ? handleReact19ChildRef : combinedRef,
126132
[mappedFocusEvent]: handleBubbledEvents(mappedFocusEvent),
127133
[mappedMouseEvent]: handleBubbledEvents(mappedMouseEvent),
128134
[mappedTouchEvent]: handleBubbledEvents(mappedTouchEvent)

0 commit comments

Comments
 (0)