Skip to content

Commit 295845f

Browse files
authored
chore: Keep node (#388)
* fix: mode switch motion * chore: Add comment
1 parent 7fec216 commit 295845f

File tree

1 file changed

+18
-6
lines changed

1 file changed

+18
-6
lines changed

src/SubMenu/index.tsx

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -267,18 +267,30 @@ const InternalSubMenu = (props: SubMenuProps) => {
267267
</div>
268268
);
269269

270-
if (mode !== 'inline' && !overflowDisabled) {
270+
// Cache mode if it change to `inline` which do not have popup motion
271+
const triggerModeRef = React.useRef(mode);
272+
if (mode !== 'inline') {
273+
triggerModeRef.current = mode;
274+
}
275+
276+
if (!overflowDisabled) {
277+
const triggerMode = triggerModeRef.current;
278+
279+
// Still wrap with Trigger here since we need avoid react re-mount dom node
280+
// Which makes motion failed
271281
titleNode = (
272282
<PopupTrigger
273-
mode={mode}
283+
mode={triggerMode}
274284
prefixCls={subMenuPrefixCls}
275-
visible={!internalPopupClose && open}
285+
visible={!internalPopupClose && open && mode !== 'inline'}
276286
popupClassName={popupClassName}
277287
popupOffset={popupOffset}
278288
popup={
279-
<SubMenuList id={popupId} ref={popupRef}>
280-
{children}
281-
</SubMenuList>
289+
<MenuContextProvider mode={triggerMode}>
290+
<SubMenuList id={popupId} ref={popupRef}>
291+
{children}
292+
</SubMenuList>
293+
</MenuContextProvider>
282294
}
283295
disabled={mergedDisabled}
284296
onVisibleChange={onPopupVisibleChange}

0 commit comments

Comments
 (0)