Skip to content

Commit 557a202

Browse files
committed
fix(useTrigger): use getNodeRef
1 parent 67c3267 commit 557a202

File tree

2 files changed

+7
-7
lines changed

2 files changed

+7
-7
lines changed

packages/components/_util/listener.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ export const off = ((): any => {
2626
element: Node,
2727
event: string,
2828
handler: EventListenerOrEventListenerObject,
29-
options?: boolean | EventListenerOptions,
29+
options?: EventListenerOptions,
3030
): any => {
3131
if (element && event) {
3232
element.removeEventListener(event, handler, options ?? false);

packages/components/popup/hooks/useTrigger.tsx

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import React, { useCallback, useEffect, useMemo, useRef } from 'react';
22
import { off, on } from '../../_util/listener';
3-
import { getRefDom, mergeRefs, supportNodeRef } from '../../_util/ref';
3+
import { getNodeRef, getRefDom, mergeRefs, supportNodeRef } from '../../_util/ref';
44
import useConfig from '../../hooks/useConfig';
55

66
const ESC_KEY = 'Escape';
@@ -21,12 +21,12 @@ export default function useTrigger({
2121

2222
const triggerRef = useRef<HTMLElement>(null);
2323
const visibleTimer = useRef(null);
24-
const leaveFlag = useRef(false);
24+
const leaveFlag = useRef(false); // 防止多次触发显隐
2525

2626
// 禁用和无内容时不展示
2727
const shouldToggle = useMemo(() => {
2828
if (disabled) return false;
29-
return !disabled && content === 0 ? true : content;
29+
return !!content;
3030
}, [disabled, content]);
3131

3232
// 解析 delay 数据类型
@@ -63,7 +63,8 @@ export default function useTrigger({
6363

6464
const handleClick = (e: MouseEvent) => {
6565
const target = e.target as HTMLElement;
66-
// https://github.com/Tencent/tdesign-react/issues/2320
66+
// Fix: https://github.com/Tencent/tdesign-react/issues/2320
67+
// 点击 clear icon 是否触发 Popup 显隐切换的逻辑交给具体逻辑自己处理,避免重复触发
6768
const isClearIcon =
6869
target?.closest?.(`.${classPrefix}-input__suffix-clear`) ||
6970
target?.closest?.(`.${classPrefix}-tag-input__suffix-clear`);
@@ -162,7 +163,6 @@ export default function useTrigger({
162163
on(element, 'contextmenu', handleContextMenu);
163164
on(element, 'touchstart', handleTouchStart, { passive: true });
164165
on(element, 'keydown', handleKeyDown);
165-
166166
return () => {
167167
off(element, 'click', handleClick);
168168
off(element, 'mousedown', handleMouseDown);
@@ -221,7 +221,7 @@ export default function useTrigger({
221221
if (triggerElementIsString) return;
222222

223223
if (supportNodeRef(children)) {
224-
const childRef = (children as any).ref;
224+
const childRef = getNodeRef(children);
225225
const mergedRef = childRef ? mergeRefs(triggerRef, childRef) : triggerRef;
226226
return React.cloneElement(children, { ref: mergedRef });
227227
}

0 commit comments

Comments
 (0)