Skip to content

Commit bbcd5f4

Browse files
committed
chore: perf before render
1 parent cb82a0d commit bbcd5f4

File tree

1 file changed

+55
-49
lines changed

1 file changed

+55
-49
lines changed

src/index.tsx

Lines changed: 55 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -595,6 +595,10 @@ export function generateTrigger(
595595
};
596596
}
597597

598+
// ============================ Perf ============================
599+
const rendedRef = React.useRef(false);
600+
rendedRef.current ||= forceRender || mergedOpen || inMotion;
601+
598602
// =========================== Render ===========================
599603
const mergedChildrenProps = {
600604
...originChildProps,
@@ -651,55 +655,57 @@ export function generateTrigger(
651655
>
652656
{triggerNode}
653657
</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+
)}
703709
</>
704710
);
705711
});

0 commit comments

Comments
 (0)