Skip to content

Commit e49ff2d

Browse files
committed
chore: refactor
1 parent 128def0 commit e49ff2d

File tree

2 files changed

+13
-10
lines changed

2 files changed

+13
-10
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343
"dependencies": {
4444
"@rc-component/motion": "^1.1.4",
4545
"@rc-component/portal": "^2.2.0",
46-
"@rc-component/resize-observer": "^1.1.0",
46+
"@rc-component/resize-observer": "^1.1.1",
4747
"@rc-component/util": "^1.2.1",
4848
"clsx": "^2.1.1"
4949
},

src/index.tsx

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import Portal from '@rc-component/portal';
22
import { clsx } from 'clsx';
33
import type { CSSMotionProps } from '@rc-component/motion';
4-
// TODO: Replace ResizeObserver with useResizeObserver
5-
import ResizeObserver, { useResizeObserver } from '@rc-component/resize-observer';
4+
import { useResizeObserver } from '@rc-component/resize-observer';
65
import { isDOM } from '@rc-component/util/lib/Dom/findDOMNode';
76
import { getShadowRoot } from '@rc-component/util/lib/Dom/shadow';
7+
import { useComposeRef } from '@rc-component/util/lib/ref';
88
import useEvent from '@rc-component/util/lib/hooks/useEvent';
99
import useId from '@rc-component/util/lib/hooks/useId';
1010
import useLayoutEffect from '@rc-component/util/lib/hooks/useLayoutEffect';
@@ -783,22 +783,25 @@ export function generateTrigger(
783783
y: arrowY,
784784
};
785785

786+
// =================== Resize Observer ===================
787+
// Use hook to observe target element resize
788+
// Pass targetEle directly instead of a function so the hook will re-observe when target changes
789+
useResizeObserver(mergedOpen, targetEle, onTargetResize);
790+
791+
// Compose refs
792+
const mergedRef = useComposeRef(setTargetRef, (child as any).ref);
793+
786794
// Child Node
787795
const triggerNode = React.cloneElement(child, {
796+
ref: mergedRef,
788797
...mergedChildrenProps,
789798
...passedProps,
790799
});
791800

792801
// Render
793802
return (
794803
<>
795-
<ResizeObserver
796-
disabled={!mergedOpen}
797-
ref={setTargetRef}
798-
onResize={onTargetResize}
799-
>
800-
{triggerNode}
801-
</ResizeObserver>
804+
{triggerNode}
802805
{rendedRef.current && (!uniqueContext || !unique) && (
803806
<TriggerContext.Provider value={context}>
804807
<Popup

0 commit comments

Comments
 (0)