@@ -644,6 +644,10 @@ export function generateTrigger(
644
644
cloneProps . className = classNames ( originChildProps . className , className ) ;
645
645
}
646
646
647
+ // ============================ Perf ============================
648
+ const renderedRef = React . useRef ( false ) ;
649
+ renderedRef . current ||= forceRender || mergedOpen || inMotion ;
650
+
647
651
// =========================== Render ===========================
648
652
const mergedChildrenProps = {
649
653
...originChildProps ,
@@ -702,55 +706,57 @@ export function generateTrigger(
702
706
{ triggerNode }
703
707
</ TriggerWrapper >
704
708
</ ResizeObserver >
705
- < TriggerContext . Provider value = { context } >
706
- < Popup
707
- portal = { PortalComponent }
708
- ref = { setPopupRef }
709
- prefixCls = { prefixCls }
710
- popup = { popup }
711
- className = { classNames ( popupClassName , alignedClassName ) }
712
- style = { popupStyle }
713
- target = { targetEle }
714
- onMouseEnter = { onPopupMouseEnter }
715
- onMouseLeave = { onPopupMouseLeave }
716
- // https://github.com/ant-design/ant-design/issues/43924
717
- onPointerEnter = { onPopupMouseEnter }
718
- zIndex = { zIndex }
719
- // Open
720
- open = { mergedOpen }
721
- keepDom = { inMotion }
722
- fresh = { fresh }
723
- // Click
724
- onClick = { onPopupClick }
725
- onPointerDownCapture = { onPopupPointerDown }
726
- // Mask
727
- mask = { mask }
728
- // Motion
729
- motion = { mergePopupMotion }
730
- maskMotion = { mergeMaskMotion }
731
- onVisibleChanged = { onVisibleChanged }
732
- onPrepare = { onPrepare }
733
- // Portal
734
- forceRender = { forceRender }
735
- autoDestroy = { mergedAutoDestroy }
736
- getPopupContainer = { getPopupContainer }
737
- // Arrow
738
- align = { alignInfo }
739
- arrow = { innerArrow }
740
- arrowPos = { arrowPos }
741
- // Align
742
- ready = { ready }
743
- offsetX = { offsetX }
744
- offsetY = { offsetY }
745
- offsetR = { offsetR }
746
- offsetB = { offsetB }
747
- onAlign = { triggerAlign }
748
- // Stretch
749
- stretch = { stretch }
750
- targetWidth = { targetWidth / scaleX }
751
- targetHeight = { targetHeight / scaleY }
752
- />
753
- </ TriggerContext . Provider >
709
+ { renderedRef . current && (
710
+ < TriggerContext . Provider value = { context } >
711
+ < Popup
712
+ portal = { PortalComponent }
713
+ ref = { setPopupRef }
714
+ prefixCls = { prefixCls }
715
+ popup = { popup }
716
+ className = { classNames ( popupClassName , alignedClassName ) }
717
+ style = { popupStyle }
718
+ target = { targetEle }
719
+ onMouseEnter = { onPopupMouseEnter }
720
+ onMouseLeave = { onPopupMouseLeave }
721
+ // https://github.com/ant-design/ant-design/issues/43924
722
+ onPointerEnter = { onPopupMouseEnter }
723
+ zIndex = { zIndex }
724
+ // Open
725
+ open = { mergedOpen }
726
+ keepDom = { inMotion }
727
+ fresh = { fresh }
728
+ // Click
729
+ onClick = { onPopupClick }
730
+ onPointerDownCapture = { onPopupPointerDown }
731
+ // Mask
732
+ mask = { mask }
733
+ // Motion
734
+ motion = { mergePopupMotion }
735
+ maskMotion = { mergeMaskMotion }
736
+ onVisibleChanged = { onVisibleChanged }
737
+ onPrepare = { onPrepare }
738
+ // Portal
739
+ forceRender = { forceRender }
740
+ autoDestroy = { mergedAutoDestroy }
741
+ getPopupContainer = { getPopupContainer }
742
+ // Arrow
743
+ align = { alignInfo }
744
+ arrow = { innerArrow }
745
+ arrowPos = { arrowPos }
746
+ // Align
747
+ ready = { ready }
748
+ offsetX = { offsetX }
749
+ offsetY = { offsetY }
750
+ offsetR = { offsetR }
751
+ offsetB = { offsetB }
752
+ onAlign = { triggerAlign }
753
+ // Stretch
754
+ stretch = { stretch }
755
+ targetWidth = { targetWidth / scaleX }
756
+ targetHeight = { targetHeight / scaleY }
757
+ />
758
+ </ TriggerContext . Provider >
759
+ ) }
754
760
</ >
755
761
) ;
756
762
} ) ;
0 commit comments