|
|
@ -9,56 +9,57 @@ import "./index.less"; |
|
|
|
let scrollbar = null |
|
|
|
const homePath = '/example/e1/c1' |
|
|
|
const Sider = (props) => { |
|
|
|
const { collapsed, clientHeight, dispatch, pathname,leftItems,leftChange } = props |
|
|
|
const { collapsed, clientHeight, dispatch, pathname, leftItems, leftChange } = props |
|
|
|
const [items, setItems] = useState([]) |
|
|
|
const [selectedKeys, setSelectedKeys] = useState([]) |
|
|
|
const [openKeys, setOpenKeys] = useState([]) |
|
|
|
useEffect(() => { |
|
|
|
const { sections, dispatch, user } = props; |
|
|
|
let nextItems = leftItems |
|
|
|
let pathname_ = pathname == '/' ? homePath : pathname |
|
|
|
const initKeys = (items, lastKeys) => { |
|
|
|
console.log('1111111',items); |
|
|
|
for (let it of items) { |
|
|
|
if (it.to && it.to == pathname_) { |
|
|
|
lastKeys.selectedKeys.push(it.itemKey) |
|
|
|
return lastKeys |
|
|
|
} else if (it.items && it.items.length) { |
|
|
|
const preLastKeys = JSON.parse(JSON.stringify(lastKeys)) |
|
|
|
preLastKeys.openKeys.push(it.itemKey) |
|
|
|
const nextKeys = initKeys(it.items, JSON.parse(JSON.stringify(preLastKeys))) |
|
|
|
if (nextKeys.selectedKeys.length > preLastKeys.selectedKeys.length || nextKeys.openKeys.length > preLastKeys.openKeys.length) { |
|
|
|
return nextKeys |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
return lastKeys |
|
|
|
return { |
|
|
|
selectedKeys: [], |
|
|
|
openKeys: [] |
|
|
|
} |
|
|
|
} |
|
|
|
// let pathname_ = pathname == '/' ? homePath : pathname |
|
|
|
// const initKeys = (items, lastKeys) => { |
|
|
|
// // console.log('1111111',items); |
|
|
|
// for (let it of items) { |
|
|
|
// if (it.to && it.to == pathname_) { |
|
|
|
// // console.log('22222222222',it.itemKey); |
|
|
|
// lastKeys.selectedKeys.push(it.itemKey) |
|
|
|
// return lastKeys |
|
|
|
// } else if (it.items && it.items.length) { |
|
|
|
// const preLastKeys = JSON.parse(JSON.stringify(lastKeys)) |
|
|
|
// preLastKeys.openKeys.push(it.itemKey) |
|
|
|
// const nextKeys = initKeys(it.items, JSON.parse(JSON.stringify(preLastKeys))) |
|
|
|
// if (nextKeys.selectedKeys.length > preLastKeys.selectedKeys.length || nextKeys.openKeys.length > preLastKeys.openKeys.length) { |
|
|
|
// return nextKeys |
|
|
|
// } |
|
|
|
// } |
|
|
|
// } |
|
|
|
// return lastKeys |
|
|
|
// return { |
|
|
|
// selectedKeys: [], |
|
|
|
// openKeys: [] |
|
|
|
// } |
|
|
|
// } |
|
|
|
setItems(nextItems) |
|
|
|
const { selectedKeys, openKeys } = initKeys( |
|
|
|
nextItems, |
|
|
|
{ |
|
|
|
selectedKeys: [], |
|
|
|
openKeys: [] |
|
|
|
} |
|
|
|
) |
|
|
|
if (selectedKeys.length || openKeys.length) { |
|
|
|
setSelectedKeys(selectedKeys) |
|
|
|
setOpenKeys(openKeys) |
|
|
|
} else { |
|
|
|
const lastSelectedKeys = localStorage.getItem('vcmp_selected_sider') |
|
|
|
if (lastSelectedKeys) { |
|
|
|
setSelectedKeys(JSON.parse(lastSelectedKeys)) |
|
|
|
} |
|
|
|
const lastOpenKeys = localStorage.getItem('vcmp_open_sider') |
|
|
|
if (lastOpenKeys) { |
|
|
|
setOpenKeys(JSON.parse(lastOpenKeys)) |
|
|
|
} |
|
|
|
} |
|
|
|
// const { selectedKeys, openKeys } = initKeys( |
|
|
|
// nextItems, |
|
|
|
// { |
|
|
|
// selectedKeys: [], |
|
|
|
// openKeys: [] |
|
|
|
// } |
|
|
|
// ) |
|
|
|
// if (selectedKeys.length || openKeys.length) { |
|
|
|
// setSelectedKeys(selectedKeys) |
|
|
|
// setOpenKeys(openKeys) |
|
|
|
// } else { |
|
|
|
// const lastSelectedKeys = localStorage.getItem('vcmp_selected_sider') |
|
|
|
// if (lastSelectedKeys) { |
|
|
|
// setSelectedKeys(JSON.parse(lastSelectedKeys)) |
|
|
|
// } |
|
|
|
// const lastOpenKeys = localStorage.getItem('vcmp_open_sider') |
|
|
|
// if (lastOpenKeys) { |
|
|
|
// setOpenKeys(JSON.parse(lastOpenKeys)) |
|
|
|
// } |
|
|
|
// } |
|
|
|
|
|
|
|
scrollbar = new PerfectScrollbar('#page-slider', { suppressScrollX: true }); |
|
|
|
if (pathname == '/') { |
|
|
@ -68,38 +69,21 @@ const Sider = (props) => { |
|
|
|
let routeSelectedKey = [useLocation().pathname.split('/')[1]]//没有子目录的 |
|
|
|
let routeSelectedKeys = [useLocation().pathname.split('/')[2]]//有子目录的 |
|
|
|
let routeSelectedKeyss = [useLocation().pathname.split('/')[3]]//有子目录的 |
|
|
|
useEffect(()=>{ |
|
|
|
let pathname_ = pathname == '/' ? homePath : pathname |
|
|
|
const initKeys = (items, lastKeys) => { |
|
|
|
for (let it of items) { |
|
|
|
if (it.to && it.to == pathname_) { |
|
|
|
lastKeys.selectedKeys.push(it.itemKey) |
|
|
|
return lastKeys |
|
|
|
} else if (it.items && it.items.length) { |
|
|
|
const preLastKeys = JSON.parse(JSON.stringify(lastKeys)) |
|
|
|
preLastKeys.openKeys.push(it.itemKey) |
|
|
|
const nextKeys = initKeys(it.items, JSON.parse(JSON.stringify(preLastKeys))) |
|
|
|
if (nextKeys.selectedKeys.length > preLastKeys.selectedKeys.length || nextKeys.openKeys.length > preLastKeys.openKeys.length) { |
|
|
|
return nextKeys |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
return lastKeys |
|
|
|
} |
|
|
|
if(routeSelectedKeyss[0]){ |
|
|
|
useEffect(() => { |
|
|
|
if (routeSelectedKeyss[0]) { |
|
|
|
setSelectedKeys(routeSelectedKeyss) |
|
|
|
} |
|
|
|
else if(routeSelectedKeys[0]){ |
|
|
|
else if (routeSelectedKeys[0]) { |
|
|
|
setSelectedKeys(routeSelectedKeys) |
|
|
|
} |
|
|
|
else{ |
|
|
|
else { |
|
|
|
setSelectedKeys(routeSelectedKey) |
|
|
|
} |
|
|
|
const lastOpenKeys = localStorage.getItem('vcmp_open_sider') |
|
|
|
if (lastOpenKeys) { |
|
|
|
setOpenKeys(JSON.parse(lastOpenKeys)) |
|
|
|
} |
|
|
|
},[window.localStorage.vcmp_open_sider,window.localStorage.vcmp_selected_sider,leftChange]) |
|
|
|
}, [window.localStorage.vcmp_open_sider, window.localStorage.vcmp_selected_sider, leftChange]) |
|
|
|
|
|
|
|
useEffect(() => { |
|
|
|
if (scrollbar) { |
|
|
@ -107,9 +91,9 @@ const Sider = (props) => { |
|
|
|
} |
|
|
|
}) |
|
|
|
return ( |
|
|
|
<div id={'page-slider'} style={{ height: clientHeight, position: 'relative',background:'#101531',width:180 }}> |
|
|
|
<div id={'page-slider'} style={{ height: clientHeight, position: 'relative', background: '#101531', width: 180 }}> |
|
|
|
<Nav |
|
|
|
style={{background:'#101531',width:180,padding:0}} |
|
|
|
style={{ background: '#101531', width: 180, padding: 0 }} |
|
|
|
selectedKeys={selectedKeys} |
|
|
|
|
|
|
|
openKeys={openKeys} |
|
|
|