diff --git a/src/index.tsx b/src/index.tsx
index 22f29a0a..28a1221e 100644
--- a/src/index.tsx
+++ b/src/index.tsx
@@ -496,11 +496,11 @@ export function generateTrigger(
}
});
- const onScroll = () => {
+ const onScroll = useEvent(() => {
if (openRef.current && alignPoint && clickToHide) {
triggerOpen(false);
}
- };
+ });
useWatch(mergedOpen, targetEle, popupEle, triggerAlign, onScroll);
diff --git a/tests/point.test.jsx b/tests/point.test.jsx
index 30c2a350..282206d0 100644
--- a/tests/point.test.jsx
+++ b/tests/point.test.jsx
@@ -141,6 +141,20 @@ describe('Trigger.Point', () => {
expect(document.querySelector('.rc-trigger-popup-hidden')).toBeTruthy();
});
+
+ it('should use the latest alignPoint value when scrolling', async () => {
+ const { container, rerender } = render(
+ ,
+ );
+ await trigger(container, 'click', { clientX: 10, clientY: 20 });
+
+ expect(document.querySelector('.rc-trigger-popup-hidden')).toBeFalsy();
+
+ rerender();
+ fireEvent.scroll(container.querySelector('.scroll'));
+
+ expect(document.querySelector('.rc-trigger-popup-hidden')).toBeTruthy();
+ });
});
describe('placement', () => {