From c799a5d272f4f204e572e4842a77ef00e3cb4f38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=9F=E8=B4=A4?= Date: Mon, 17 Jan 2022 10:51:46 +0800 Subject: [PATCH 1/2] _internalRenderSubMenuItem and _internalRenderMenuItem support selected --- src/Menu.tsx | 2 ++ src/MenuItem.tsx | 2 +- src/SubMenu/index.tsx | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/Menu.tsx b/src/Menu.tsx index a2eb9270..fdc8b150 100644 --- a/src/Menu.tsx +++ b/src/Menu.tsx @@ -120,6 +120,7 @@ export interface MenuProps _internalRenderMenuItem?: ( originNode: React.ReactElement, menuItemProps: any, + selected: boolean, ) => React.ReactElement; /*** * @private Only used for `pro-layout`. Do not use in your prod directly @@ -128,6 +129,7 @@ export interface MenuProps _internalRenderSubMenuItem?: ( originNode: React.ReactElement, subMenuItemProps: any, + selected: boolean, ) => React.ReactElement; } diff --git a/src/MenuItem.tsx b/src/MenuItem.tsx index 2e142924..cd1cd2ee 100644 --- a/src/MenuItem.tsx +++ b/src/MenuItem.tsx @@ -244,7 +244,7 @@ const InternalMenuItem = (props: MenuItemProps) => { ); if (_internalRenderMenuItem) { - renderNode = _internalRenderMenuItem(renderNode, props); + renderNode = _internalRenderMenuItem(renderNode, props, selected); } return renderNode; diff --git a/src/SubMenu/index.tsx b/src/SubMenu/index.tsx index f5124526..ba939c19 100644 --- a/src/SubMenu/index.tsx +++ b/src/SubMenu/index.tsx @@ -355,7 +355,7 @@ const InternalSubMenu = (props: SubMenuProps) => { ); if (_internalRenderSubMenuItem) { - listNode = _internalRenderSubMenuItem(listNode, props); + listNode = _internalRenderSubMenuItem(listNode, props, childrenSelected); } // >>>>> Render From a6df6fe3ccbf65422a37cc53eae4d162c5ee2923 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=9F=E8=B4=A4?= Date: Mon, 17 Jan 2022 11:01:17 +0800 Subject: [PATCH 2/2] use stateProps --- src/Menu.tsx | 8 ++++++-- src/MenuItem.tsx | 2 +- src/SubMenu/index.tsx | 4 +++- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/Menu.tsx b/src/Menu.tsx index fdc8b150..887d5cee 100644 --- a/src/Menu.tsx +++ b/src/Menu.tsx @@ -120,7 +120,9 @@ export interface MenuProps _internalRenderMenuItem?: ( originNode: React.ReactElement, menuItemProps: any, - selected: boolean, + stateProps: { + selected: boolean; + }, ) => React.ReactElement; /*** * @private Only used for `pro-layout`. Do not use in your prod directly @@ -129,7 +131,9 @@ export interface MenuProps _internalRenderSubMenuItem?: ( originNode: React.ReactElement, subMenuItemProps: any, - selected: boolean, + stateProps: { + selected: boolean; + }, ) => React.ReactElement; } diff --git a/src/MenuItem.tsx b/src/MenuItem.tsx index cd1cd2ee..5e7a724b 100644 --- a/src/MenuItem.tsx +++ b/src/MenuItem.tsx @@ -244,7 +244,7 @@ const InternalMenuItem = (props: MenuItemProps) => { ); if (_internalRenderMenuItem) { - renderNode = _internalRenderMenuItem(renderNode, props, selected); + renderNode = _internalRenderMenuItem(renderNode, props, { selected }); } return renderNode; diff --git a/src/SubMenu/index.tsx b/src/SubMenu/index.tsx index ba939c19..9549b2ba 100644 --- a/src/SubMenu/index.tsx +++ b/src/SubMenu/index.tsx @@ -355,7 +355,9 @@ const InternalSubMenu = (props: SubMenuProps) => { ); if (_internalRenderSubMenuItem) { - listNode = _internalRenderSubMenuItem(listNode, props, childrenSelected); + listNode = _internalRenderSubMenuItem(listNode, props, { + selected: childrenSelected, + }); } // >>>>> Render