Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
A
ant-design-pro
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
duanledexianxianxian
ant-design-pro
Commits
c2fe4009
Commit
c2fe4009
authored
6 years ago
by
afc163
Committed by
偏右
6 years ago
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
remove LoadingPage
parent
c93b0169
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
63 additions
and
125 deletions
+63
-125
config/router.config.js
config/router.config.js
+1
-1
src/layouts/BasicLayout.js
src/layouts/BasicLayout.js
+62
-15
src/layouts/LoadingPage.js
src/layouts/LoadingPage.js
+0
-109
No files found.
config/router.config.js
View file @
c2fe4009
...
...
@@ -13,7 +13,7 @@ module.exports = [
// app
{
path
:
'
/
'
,
component
:
'
../layouts/
LoadingPage
'
,
component
:
'
../layouts/
BasicLayout
'
,
routes
:
[
// dashboard
{
path
:
'
/
'
,
redirect
:
'
/dashboard/analysis
'
},
...
...
This diff is collapsed.
Click to expand it.
src/layouts/BasicLayout.js
View file @
c2fe4009
import
React
from
'
react
'
;
import
{
Layout
}
from
'
antd
'
;
import
DocumentTitle
from
'
react-document-title
'
;
import
deep
Equal
from
'
lodash/isEqual
'
;
import
is
Equal
from
'
lodash/isEqual
'
;
import
memoizeOne
from
'
memoize-one
'
;
import
{
connect
}
from
'
dva
'
;
import
{
ContainerQuery
}
from
'
react-container-query
'
;
import
classNames
from
'
classnames
'
;
import
pathToRegexp
from
'
path-to-regexp
'
;
import
{
enquireScreen
,
unenquireScreen
}
from
'
enquire-js
'
;
import
{
formatMessage
}
from
'
umi/locale
'
;
import
SiderMenu
from
'
@/components/SiderMenu
'
;
import
Authorized
from
'
@/utils/Authorized
'
;
...
...
@@ -15,28 +16,59 @@ import logo from '../assets/logo.svg';
import
Footer
from
'
./Footer
'
;
import
Header
from
'
./Header
'
;
import
Context
from
'
./MenuContext
'
;
// TODO: should use this.props.routes
import
routerConfig
from
'
../../config/router.config
'
;
const
{
Content
}
=
Layout
;
const
{
check
}
=
Authorized
;
// Conversion router to menu.
function
formatter
(
data
,
parentPath
=
''
,
parentAuthority
,
parentName
)
{
return
data
.
map
(
item
=>
{
let
locale
=
'
menu
'
;
if
(
parentName
&&
item
.
name
)
{
locale
=
`
${
parentName
}
.
${
item
.
name
}
`
;
}
else
if
(
item
.
name
)
{
locale
=
`menu.
${
item
.
name
}
`
;
}
else
if
(
parentName
)
{
locale
=
parentName
;
}
const
result
=
{
...
item
,
locale
,
authority
:
item
.
authority
||
parentAuthority
,
};
if
(
item
.
routes
)
{
const
children
=
formatter
(
item
.
routes
,
`
${
parentPath
}${
item
.
path
}
/`
,
item
.
authority
,
locale
);
// Reduce memory usage
result
.
children
=
children
;
}
delete
result
.
routes
;
return
result
;
});
}
// get menu map data
const
menuData
=
formatter
(
routerConfig
[
1
].
routes
);
/**
* 获取面包屑映射
* @param {Object} menuData 菜单配置
*/
const
getBreadcrumbNameMap
=
memoizeOne
(
me
un
=>
{
const
getBreadcrumbNameMap
=
memoizeOne
(
me
nu
=>
{
const
routerMap
=
{};
const
mergeMe
unAndRouter
=
meunData
=>
{
me
unData
.
forEach
(
meun
Item
=>
{
if
(
me
un
Item
.
children
)
{
mergeMe
unAndRouter
(
meun
Item
.
children
);
const
mergeMe
nuAndRouter
=
()
=>
{
me
nuData
.
forEach
(
menu
Item
=>
{
if
(
me
nu
Item
.
children
)
{
mergeMe
nuAndRouter
(
menu
Item
.
children
);
}
// Reduce memory usage
routerMap
[
me
unItem
.
path
]
=
meun
Item
;
routerMap
[
me
nuItem
.
path
]
=
menu
Item
;
});
};
mergeMe
unAndRouter
(
meun
);
mergeMe
nuAndRouter
(
menu
);
return
routerMap
;
},
deep
Equal
);
},
is
Equal
);
const
query
=
{
'
screen-xs
'
:
{
...
...
@@ -66,31 +98,47 @@ const query = {
class
BasicLayout
extends
React
.
PureComponent
{
constructor
(
props
)
{
super
(
props
);
const
{
menuData
}
=
this
.
props
;
this
.
getPageTitle
=
memoizeOne
(
this
.
getPageTitle
);
// Because there are many places to be. So put it here
this
.
breadcrumbNameMap
=
getBreadcrumbNameMap
(
menuData
);
this
.
breadcrumbNameMap
=
getBreadcrumbNameMap
();
console
.
log
(
this
.
breadcrumbNameMap
);
}
state
=
{
rendering
:
true
,
isMobile
:
false
,
};
componentDidMount
()
{
const
{
dispatch
}
=
this
.
props
;
dispatch
({
type
:
'
user/fetchCurrent
'
,
});
dispatch
({
type
:
'
setting/getSetting
'
,
});
this
.
renderRef
=
requestAnimationFrame
(()
=>
{
this
.
setState
({
rendering
:
false
,
});
});
this
.
enquireHandler
=
enquireScreen
(
mobile
=>
{
const
{
isMobile
}
=
this
.
state
;
if
(
isMobile
!==
mobile
)
{
this
.
setState
({
isMobile
:
mobile
,
});
}
});
}
componentDidUpdate
()
{
const
{
menuData
}
=
this
.
props
;
this
.
breadcrumbNameMap
=
getBreadcrumbNameMap
(
menuData
);
this
.
breadcrumbNameMap
=
getBreadcrumbNameMap
();
}
componentWillUnmount
()
{
cancelAnimationFrame
(
this
.
renderRef
);
unenquireScreen
(
this
.
enquireHandler
);
}
getContext
()
{
...
...
@@ -168,13 +216,12 @@ class BasicLayout extends React.PureComponent {
render
()
{
const
{
isMobile
,
silderTheme
,
layout
:
PropsLayout
,
children
,
location
:
{
pathname
},
}
=
this
.
props
;
const
{
rendering
}
=
this
.
state
;
const
{
rendering
,
isMobile
}
=
this
.
state
;
const
isTop
=
PropsLayout
===
'
topmenu
'
;
const
layout
=
(
<
Layout
>
...
...
This diff is collapsed.
Click to expand it.
src/layouts/LoadingPage.js
deleted
100644 → 0
View file @
c93b0169
import
React
,
{
PureComponent
}
from
'
react
'
;
import
{
Spin
}
from
'
antd
'
;
import
{
connect
}
from
'
dva
'
;
import
{
enquireScreen
,
unenquireScreen
}
from
'
enquire-js
'
;
import
BasicLayout
from
'
./BasicLayout
'
;
// TODO: should use this.props.routes
import
routerConfig
from
'
../../config/router.config
'
;
// Conversion router to menu.
function
formatter
(
data
,
parentPath
=
''
,
parentAuthority
,
parentName
)
{
return
data
.
map
(
item
=>
{
let
locale
=
'
menu
'
;
if
(
parentName
&&
item
.
name
)
{
locale
=
`
${
parentName
}
.
${
item
.
name
}
`
;
}
else
if
(
item
.
name
)
{
locale
=
`menu.
${
item
.
name
}
`
;
}
else
if
(
parentName
)
{
locale
=
parentName
;
}
const
result
=
{
...
item
,
locale
,
authority
:
item
.
authority
||
parentAuthority
,
};
if
(
item
.
routes
)
{
const
children
=
formatter
(
item
.
routes
,
`
${
parentPath
}${
item
.
path
}
/`
,
item
.
authority
,
locale
);
// Reduce memory usage
result
.
children
=
children
;
}
delete
result
.
routes
;
return
result
;
});
}
// get meun map data
const
MenuData
=
formatter
(
routerConfig
[
1
].
routes
);
class
LoadingPage
extends
PureComponent
{
state
=
{
loading
:
true
,
isMobile
:
false
,
};
componentDidMount
()
{
const
{
dispatch
}
=
this
.
props
;
this
.
enquireHandler
=
enquireScreen
(
mobile
=>
{
const
{
isMobile
}
=
this
.
state
;
if
(
isMobile
!==
mobile
)
{
this
.
setState
({
isMobile
:
mobile
,
});
}
});
dispatch
({
type
:
'
user/fetchCurrent
'
,
});
this
.
hideLoading
();
this
.
initSetting
();
}
componentWillUnmount
()
{
unenquireScreen
(
this
.
enquireHandler
);
}
hideLoading
()
{
this
.
setState
({
loading
:
false
,
});
}
/**
* get setting from url params
*/
initSetting
()
{
const
{
dispatch
}
=
this
.
props
;
dispatch
({
type
:
'
setting/getSetting
'
,
});
}
render
()
{
const
{
loading
,
isMobile
}
=
this
.
state
;
if
(
loading
)
{
return
(
<
div
style
=
{{
width
:
'
100%
'
,
height
:
'
100%
'
,
margin
:
'
auto
'
,
paddingTop
:
50
,
textAlign
:
'
center
'
,
}}
>
<
Spin
size
=
"
large
"
/>
<
/div
>
);
}
return
(
<
BasicLayout
isMobile
=
{
isMobile
}
menuData
=
{
MenuData
}
routerData
=
{
routerConfig
}
redirectData
=
{[]}
{...
this
.
props
}
/
>
);
}
}
export
default
connect
()(
LoadingPage
);
This diff is collapsed.
Click to expand it.
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