diff --git a/src/UniqueProvider/UniqueBody.tsx b/src/UniqueProvider/UniqueBody.tsx index e60e0bac..dfa3b9e7 100644 --- a/src/UniqueProvider/UniqueBody.tsx +++ b/src/UniqueProvider/UniqueBody.tsx @@ -56,6 +56,14 @@ const UniqueBody = (props: UniqueBodyProps) => { offsetY, ); + // Cache for offsetStyle when ready is true + const cachedOffsetStyleRef = React.useRef(offsetStyle); + + // Update cached offset style when ready is true + if (ready) { + cachedOffsetStyleRef.current = offsetStyle; + } + // Apply popup size if available const sizeStyle: React.CSSProperties = {}; if (popupSize) { @@ -85,14 +93,16 @@ const UniqueBody = (props: UniqueBodyProps) => { return (
); }} diff --git a/src/UniqueProvider/index.tsx b/src/UniqueProvider/index.tsx index a29fee3c..7ad3b3d7 100644 --- a/src/UniqueProvider/index.tsx +++ b/src/UniqueProvider/index.tsx @@ -105,35 +105,35 @@ const UniqueProvider = ({ children, postTriggerProps }: UniqueProviderProps) => ] = useAlign( open, popupEle, - options?.target, - options?.popupPlacement, - options?.builtinPlacements || {}, - options?.popupAlign, + mergedOptions?.target, + mergedOptions?.popupPlacement, + mergedOptions?.builtinPlacements || {}, + mergedOptions?.popupAlign, undefined, // onPopupAlign false, // isMobile ); const alignedClassName = React.useMemo(() => { - if (!options) { + if (!mergedOptions) { return ''; } const baseClassName = getAlignPopupClassName( - options.builtinPlacements || {}, - options.prefixCls || '', + mergedOptions.builtinPlacements || {}, + mergedOptions.prefixCls || '', alignInfo, false, // alignPoint is false for UniqueProvider ); return classNames( baseClassName, - options.getPopupClassNameFromAlign?.(alignInfo), + mergedOptions.getPopupClassNameFromAlign?.(alignInfo), ); }, [ alignInfo, - options?.getPopupClassNameFromAlign, - options?.builtinPlacements, - options?.prefixCls, + mergedOptions?.getPopupClassNameFromAlign, + mergedOptions?.builtinPlacements, + mergedOptions?.prefixCls, ]); const contextValue = React.useMemo( @@ -171,7 +171,7 @@ const UniqueProvider = ({ children, postTriggerProps }: UniqueProviderProps) => return ( {children} - {options && ( + {mergedOptions && (