-
글쓴이글
-
2021년 12월 15일 19:04 #22056
이상원참가자그 라우터 방식중에 PrivateRoute, PublicRoute 방식중 질문이 있는데요.
App.js
return (
<div className="App">
<Switch>
<Route>
<PrivateRoute path='/'>
<Navbar
username={user.username}
onLogout={onLogout}
onAllSns={onAllSns}
onMySns={onMySns}
/>
</PrivateRoute>
<PrivateRoute exact path='/:username'>
<MySns snsService={snsService} />
</PrivateRoute>
<PrivateRoute exact path='/board'>
<Board boardService={boardService} />
</PrivateRoute>
<PrivateRoute exact path='/editorBoard'>
<EditorBoard boardService={boardService} user={user} />
</PrivateRoute>
<PrivateRoute exact path='/:id'>
<DetailBoard boardService={boardService}/>
</PrivateRoute>
<PublicRoute Restircted={true} exact path='/' component={Login}>
<AllSns snsService={snsService} />
</PublicRoute>
</Route>
</Switch>
</div>
);
}privateRoute.jsx
import React from "react";
import { Redirect, Route } from "react-router-dom";function PrivateRoute({ component, ...rest }) {
const TOKEN = process.env.REACT_APP_BASE_URL;
return (
<Route
{...rest} render={props =>
localStorage.setItem(TOKEN) ? (
<component {...props} />
) : (
<Redirect to = "/login" />
)
}
/>
);
}export default PrivateRoute;
publicRoute.jsx
import React from 'react'
import { Redirect, Route } from "react-router-dom";function PublicRoute({ component, restricted, ...rest }) {
const TOKEN = process.env.REACT_APP_BASE_URL;
return (
<Route
{...rest} render={props =>
localStorage.setItem(TOKEN) && restricted ? (
<Redirect to="/main" />
) : (
<component {...props} />
)
}
/>
);
}export default PublicRoute
이게 코드인데요 제가 로그인폼을 만들어서 로그인전에는 로그인폼 외에는 안보이게 하고싶어서
구글에 참조 하면서 만들어봤는데요.
이렇게 만드니깐 예를들어 Board.jsx 파일에 써져있는 리스트글들이 안사라지고 Detail.jsx에도 옮겨져 와지는 오류가 있습니다.
글들이 안사라지고 계속 따라다녀요 .. 분명 저거 문제인거 같은데 해결을 못하고있습니다.
도와주세요 ㅠㅠ
2021년 12월 15일 20:28 #22062
codingapple키 마스터1 <PrivateRoute exact path='/board'>
2 <PrivateRoute exact path='/:id'>이 경우에 url란에 /board라고 입력하면 1도 만족하고 2도 만족해서 둘다 뜨는듯합니다 <Switch>를 쓰거나 그래봅시다
-
글쓴이글
- 답변은 로그인 후 가능합니다.