Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
X
xiaomai-cloud-class-web
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
xiaomai-cloud-class
xiaomai-cloud-class-web
Commits
de1de24e
Commit
de1de24e
authored
Jun 23, 2021
by
maolipeng
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix:菜单展开收起优化
parent
4539f788
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
27 additions
and
6 deletions
+27
-6
src/modules/root/Menu.tsx
+27
-6
No files found.
src/modules/root/Menu.tsx
View file @
de1de24e
import
React
,
{
useContext
,
useEffect
,
useRef
,
useState
}
from
'react'
;
import
React
,
{
Key
,
useContext
,
useEffect
,
useRef
,
useState
}
from
'react'
;
import
{
withRouter
,
}
from
'react-router-dom'
;
...
...
@@ -17,6 +17,7 @@ function Aside(props: any) {
const
ctx
:
any
=
useContext
(
XMContext
);
const
[
selectKey
,
setSelectKey
]
=
useState
();
const
[
openKeys
,
setOpenKeys
]
=
useState
([
''
]);
const
[
lastOpenKeys
,
setLastOpenKeys
]
=
useState
([
''
]);
const
[
topLogoUrl
,
setTopLogoUrl
]
=
useState
(
""
)
const
[
collapsed
,
setCollapsed
]
=
useState
(
false
)
const
rootSubmenuKeys
=
_
.
pluck
(
menuList
,
'groupCode'
);
...
...
@@ -26,6 +27,7 @@ function Aside(props: any) {
if
(
link
.
indexOf
(
item
.
link
)
!==
-
1
)
{
setSelectKey
(
item
.
groupCode
);
setOpenKeys
([])
setLastOpenKeys
([])
}
else
if
(
item
.
children
)
{
item
.
children
.
map
((
_item
:
any
,
_index
:
any
)
=>
{
if
(
link
.
indexOf
(
_item
.
link
)
!==
-
1
)
{
...
...
@@ -58,26 +60,41 @@ function Aside(props: any) {
// setOpenKeys([])
// }
}
function
onOpenChange
(
key
:
any
)
{
function
onOpenChange
(
key
:
Key
[])
{
if
(
typeof
key
===
"string"
)
{
if
(
openKeys
.
includes
(
key
))
{
setOpenKeys
([]);
setLastOpenKeys
([]);
}
else
{
setOpenKeys
([
key
]);
setLastOpenKeys
([
key
])
}
}
function
onOpenChangeForHover
(
key
:
any
)
{
}
function
onOpenChangeForHover
(
key
:
Key
[])
{
if
(
menuType
)
{
return
}
if
(
typeof
key
===
"string"
)
{
if
(
openKeys
.
includes
(
key
))
{
setOpenKeys
([]);
setLastOpenKeys
([]);
}
else
{
setOpenKeys
([
key
]);
setLastOpenKeys
([
key
])
}
}
}
function
handleMenu
()
{
handleMenuType
();
setCollapsed
(
!
collapsed
)
if
(
!
collapsed
)
{
setOpenKeys
([])
}
else
{
setOpenKeys
(
lastOpenKeys
)
}
}
return
(
...
...
@@ -116,7 +133,9 @@ function Aside(props: any) {
<
Menu
style=
{
{
minHeight
:
"100%"
,
background
:
'#0E1935'
}
}
selectedKeys=
{
selectKey
}
inlineCollapsed=
{
collapsed
}
openKeys=
{
openKeys
}
onOpenChange=
{
onOpenChange
}
// inlineCollapsed={collapsed}
mode=
{
menuType
?
"inline"
:
"vertical"
}
>
{
...
...
@@ -129,13 +148,15 @@ function Aside(props: any) {
key=
{
item
.
groupCode
}
style=
{
{
marginTop
:
0
}
}
title=
{
<
div
><
img
src=
{
item
.
img
}
className=
"icon-img"
></
img
><
span
>
{
item
.
groupName
}
</
span
></
div
>
}
onTitleClick=
{
()
=>
onOpenChange
(
item
.
groupCode
)
}
>
onTitleClick=
{
()
=>
onOpenChange
(
item
.
groupCode
)
}
onTitleMouseEnter=
{
()
=>
onOpenChangeForHover
(
item
.
groupCode
)
}
>
{
item
.
children
.
map
((
_item
:
any
,
_index
:
any
)
=>
{
if
(
ctx
.
xmState
.
storeUserPermissionList
.
indexOf
(
_item
.
groupCode
)
===
-
1
)
{
return
null
;
}
return
<
Menu
.
Item
onClick=
{
()
=>
{
toggleMenu
(
_item
)
}
}
style=
{
{
marginTop
:
0
}
}
key=
{
_item
.
groupCode
+
index
+
_index
}
>
return
<
Menu
.
Item
onClick=
{
()
=>
{
toggleMenu
(
_item
)
}
}
style=
{
{
marginTop
:
0
}
}
key=
{
_item
.
groupCode
+
index
+
_index
}
onMouseLeave=
{
()
=>
onOpenChangeForHover
(
item
.
groupCode
)
}
>
<
span
className=
"name"
>
{
_item
.
groupName
}
</
span
>
</
Menu
.
Item
>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment