From 07fc30ca697de0ee385a98238f413dfd52b67940 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=B3=E5=BB=B7=E5=AE=89?= <73953029+nrps9909@users.noreply.github.com> Date: Fri, 28 Aug 2026 15:31:57 +0800 Subject: [PATCH] fix: use latest scroll close options --- src/index.tsx | 4 ++-- tests/point.test.jsx | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) 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', () => {