@@ -644,6 +644,10 @@ export function generateTrigger(
644644 cloneProps . className = classNames ( originChildProps . className , className ) ;
645645 }
646646
647+ // ============================ Perf ============================
648+ const renderedRef = React . useRef ( false ) ;
649+ renderedRef . current ||= forceRender || mergedOpen || inMotion ;
650+
647651 // =========================== Render ===========================
648652 const mergedChildrenProps = {
649653 ...originChildProps ,
@@ -702,55 +706,57 @@ export function generateTrigger(
702706 { triggerNode }
703707 </ TriggerWrapper >
704708 </ 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+ ) }
754760 </ >
755761 ) ;
756762 } ) ;
0 commit comments