소스 검색

Route are now declared in a safer way

Skylsmoi 6 년 전
부모
커밋
846d5611b6
3개의 변경된 파일12개의 추가작업 그리고 11개의 파일을 삭제
  1. 3 3
      src/container/Tracim.jsx
  2. 1 0
      src/container/WorkspaceContent.jsx
  3. 8 8
      src/helper.js

+ 3 - 3
src/container/Tracim.jsx 파일 보기

58
               <Route path={PAGE.LOGIN} component={Login} />
58
               <Route path={PAGE.LOGIN} component={Login} />
59
 
59
 
60
               <PrivateRoute exact path={PAGE.HOME} component={WorkspaceContent} />
60
               <PrivateRoute exact path={PAGE.HOME} component={WorkspaceContent} />
61
-              <PrivateRoute exact path={PAGE.WORKSPACE.CONTENT_LIST(':idws')} component={WorkspaceContent} /> {/* "exact" here to not double match Route WORKSPACE.CONTENT */}
62
-              <PrivateRoute path={PAGE.WORKSPACE.CONTENT(':idws', ':idcts')} component={WorkspaceContent} />
61
+              {/* bellow, the '?' is important, it avoid to have to declare another route for CONTENT_LIST which could double match */}
62
+              <PrivateRoute path={PAGE.WORKSPACE.CONTENT(':idws', ':idcts?')} component={WorkspaceContent} />
63
               <PrivateRoute path={PAGE.ACCOUNT} component={Account} />
63
               <PrivateRoute path={PAGE.ACCOUNT} component={Account} />
64
-              <PrivateRoute path={PAGE.WORKSPACE.DASHBOARD(':idws')} component={Dashboard} />
64
+              <PrivateRoute path={PAGE.WORKSPACE.DASHBOARD()} component={Dashboard} />
65
               <PrivateRoute path={'/wip/:cp'} component={WIPcomponent} /> {/* for testing purpose only */}
65
               <PrivateRoute path={'/wip/:cp'} component={WIPcomponent} /> {/* for testing purpose only */}
66
 
66
 
67
               <Footer />
67
               <Footer />

+ 1 - 0
src/container/WorkspaceContent.jsx 파일 보기

21
 
21
 
22
 class WorkspaceContent extends React.Component {
22
 class WorkspaceContent extends React.Component {
23
   async componentDidMount () {
23
   async componentDidMount () {
24
+    console.log('WorkspaceContent did mount')
24
     const { workspaceList, app, match, location, dispatch } = this.props
25
     const { workspaceList, app, match, location, dispatch } = this.props
25
 
26
 
26
     if (Object.keys(app).length === 0) await dispatch(getAppList())
27
     if (Object.keys(app).length === 0) await dispatch(getAppList())

+ 8 - 8
src/helper.js 파일 보기

10
 export const PAGE = {
10
 export const PAGE = {
11
   HOME: '/',
11
   HOME: '/',
12
   WORKSPACE: {
12
   WORKSPACE: {
13
-    DASHBOARD: idws => `/workspace/${idws}`,
13
+    DASHBOARD: (idws = 'idws') => `/workspace/${idws}`,
14
     NEW: '/workspace/new',
14
     NEW: '/workspace/new',
15
-    CALENDAR: idws => `/workspace/${idws}/apps/calendar`,
16
-    CONTENT_LIST: idws => `/workspace/${idws}/apps/contents`,
17
-    CONTENT: (idws, idcts) => `/workspace/${idws}/apps/contents/${idcts}`,
18
-    CONTENT_NEW: (idws, ctstype) => `/workspace/${idws}/apps/contents/${ctstype}/new`,
19
-    CONTENT_EDIT: (idws, idcts) => `/workspace/${idws}/apps/contents/${idcts}/edit`,
20
-    CONTENT_TITLE_EDIT: (idws, idcts) => `/workspace/${idws}/apps/contents/${idcts}/title/edit`,
21
-    ADMIN: idws => `/workspace/${idws}/admin`
15
+    CALENDAR: (idws = ':idws') => `/workspace/${idws}/apps/calendar`,
16
+    CONTENT_LIST: (idws = ':idws') => `/workspace/${idws}/apps/contents`,
17
+    CONTENT: (idws = ':idws', idcts = ':idcts') => `/workspace/${idws}/apps/contents/${idcts}`,
18
+    CONTENT_NEW: (idws = ':idws', ctstype = ':ctstype') => `/workspace/${idws}/apps/contents/${ctstype}/new`,
19
+    CONTENT_EDIT: (idws = ':idws', idcts = ':idcts') => `/workspace/${idws}/apps/contents/${idcts}/edit`,
20
+    CONTENT_TITLE_EDIT: (idws = ':idws', idcts = ':idcts') => `/workspace/${idws}/apps/contents/${idcts}/title/edit`,
21
+    ADMIN: (idws = ':idws') => `/workspace/${idws}/admin`
22
   },
22
   },
23
   LOGIN: '/login',
23
   LOGIN: '/login',
24
   ACCOUNT: '/account'
24
   ACCOUNT: '/account'