11import React , { useCallback , useEffect , useMemo , useRef } from 'react' ;
22import { off , on } from '../../_util/listener' ;
3- import { getRefDom , mergeRefs , supportNodeRef } from '../../_util/ref' ;
3+ import { getNodeRef , getRefDom , mergeRefs , supportNodeRef } from '../../_util/ref' ;
44import useConfig from '../../hooks/useConfig' ;
55
66const 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