@@ -595,6 +595,10 @@ export function generateTrigger(
595
595
} ;
596
596
}
597
597
598
+ // ============================ Perf ============================
599
+ const rendedRef = React . useRef ( false ) ;
600
+ rendedRef . current ||= forceRender || mergedOpen || inMotion ;
601
+
598
602
// =========================== Render ===========================
599
603
const mergedChildrenProps = {
600
604
...originChildProps ,
@@ -651,55 +655,57 @@ export function generateTrigger(
651
655
>
652
656
{ triggerNode }
653
657
</ ResizeObserver >
654
- < TriggerContext . Provider value = { context } >
655
- < Popup
656
- portal = { PortalComponent }
657
- ref = { setPopupRef }
658
- prefixCls = { prefixCls }
659
- popup = { popup }
660
- className = { classNames ( popupClassName , alignedClassName ) }
661
- style = { popupStyle }
662
- target = { targetEle }
663
- onMouseEnter = { onPopupMouseEnter }
664
- onMouseLeave = { onPopupMouseLeave }
665
- // https://github.com/ant-design/ant-design/issues/43924
666
- onPointerEnter = { onPopupMouseEnter }
667
- zIndex = { zIndex }
668
- // Open
669
- open = { mergedOpen }
670
- keepDom = { inMotion }
671
- fresh = { fresh }
672
- // Click
673
- onClick = { onPopupClick }
674
- onPointerDownCapture = { onPopupPointerDown }
675
- // Mask
676
- mask = { mask }
677
- // Motion
678
- motion = { popupMotion }
679
- maskMotion = { maskMotion }
680
- onVisibleChanged = { onVisibleChanged }
681
- onPrepare = { onPrepare }
682
- // Portal
683
- forceRender = { forceRender }
684
- autoDestroy = { mergedAutoDestroy }
685
- getPopupContainer = { getPopupContainer }
686
- // Arrow
687
- align = { alignInfo }
688
- arrow = { innerArrow }
689
- arrowPos = { arrowPos }
690
- // Align
691
- ready = { ready }
692
- offsetX = { offsetX }
693
- offsetY = { offsetY }
694
- offsetR = { offsetR }
695
- offsetB = { offsetB }
696
- onAlign = { triggerAlign }
697
- // Stretch
698
- stretch = { stretch }
699
- targetWidth = { targetWidth / scaleX }
700
- targetHeight = { targetHeight / scaleY }
701
- />
702
- </ TriggerContext . Provider >
658
+ { rendedRef . current && (
659
+ < TriggerContext . Provider value = { context } >
660
+ < Popup
661
+ portal = { PortalComponent }
662
+ ref = { setPopupRef }
663
+ prefixCls = { prefixCls }
664
+ popup = { popup }
665
+ className = { classNames ( popupClassName , alignedClassName ) }
666
+ style = { popupStyle }
667
+ target = { targetEle }
668
+ onMouseEnter = { onPopupMouseEnter }
669
+ onMouseLeave = { onPopupMouseLeave }
670
+ // https://github.com/ant-design/ant-design/issues/43924
671
+ onPointerEnter = { onPopupMouseEnter }
672
+ zIndex = { zIndex }
673
+ // Open
674
+ open = { mergedOpen }
675
+ keepDom = { inMotion }
676
+ fresh = { fresh }
677
+ // Click
678
+ onClick = { onPopupClick }
679
+ onPointerDownCapture = { onPopupPointerDown }
680
+ // Mask
681
+ mask = { mask }
682
+ // Motion
683
+ motion = { popupMotion }
684
+ maskMotion = { maskMotion }
685
+ onVisibleChanged = { onVisibleChanged }
686
+ onPrepare = { onPrepare }
687
+ // Portal
688
+ forceRender = { forceRender }
689
+ autoDestroy = { mergedAutoDestroy }
690
+ getPopupContainer = { getPopupContainer }
691
+ // Arrow
692
+ align = { alignInfo }
693
+ arrow = { innerArrow }
694
+ arrowPos = { arrowPos }
695
+ // Align
696
+ ready = { ready }
697
+ offsetX = { offsetX }
698
+ offsetY = { offsetY }
699
+ offsetR = { offsetR }
700
+ offsetB = { offsetB }
701
+ onAlign = { triggerAlign }
702
+ // Stretch
703
+ stretch = { stretch }
704
+ targetWidth = { targetWidth / scaleX }
705
+ targetHeight = { targetHeight / scaleY }
706
+ />
707
+ </ TriggerContext . Provider >
708
+ ) }
703
709
</ >
704
710
) ;
705
711
} ) ;
0 commit comments