Skip to content

Commit 20b9f03

Browse files
committed
feat: support unref callback in composeRef
1 parent e8b68ea commit 20b9f03

File tree

3 files changed

+57
-50
lines changed

3 files changed

+57
-50
lines changed

.changeset/khaki-ligers-fly.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@udecode/react-utils': minor
3+
---
4+
5+
Add react 19 unref callback return in composeRef

packages/udecode/react-utils/src/useComposedRef.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@ type PossibleRef<T> = React.Ref<T> | undefined;
88
*/
99
const setRef = <T>(ref: PossibleRef<T>, value: T) => {
1010
if (typeof ref === 'function') {
11-
ref(value);
11+
return ref(value);
1212
} else if (ref !== null && ref !== undefined) {
13-
(ref as React.MutableRefObject<T>).current = value;
13+
(ref as React.RefObject<T>).current = value;
1414
}
1515
};
1616

@@ -20,8 +20,10 @@ const setRef = <T>(ref: PossibleRef<T>, value: T) => {
2020
*/
2121
export const composeRefs =
2222
<T>(...refs: PossibleRef<T>[]) =>
23-
(node: T) =>
24-
refs.forEach((ref) => setRef(ref, node));
23+
(node: T) => {
24+
const unrefs = refs.map((ref) => setRef(ref, node)).filter(unref => unref !== undefined);
25+
return () => unrefs.forEach(unref => unref());
26+
}
2527

2628
/**
2729
* A custom hook that composes multiple refs Accepts callback refs and

0 commit comments

Comments
 (0)