Showing
7 changed files
with
92 additions
and
3 deletions
... | @@ -4,6 +4,7 @@ import './App.css'; | ... | @@ -4,6 +4,7 @@ import './App.css'; |
4 | import LoginPage from './pages/LoginPage'; | 4 | import LoginPage from './pages/LoginPage'; |
5 | import RegisterPage from './pages/RegisterPage'; | 5 | import RegisterPage from './pages/RegisterPage'; |
6 | import HomePage from './pages/HomePage'; | 6 | import HomePage from './pages/HomePage'; |
7 | +import SettingPage from './pages/SettingPage'; | ||
7 | 8 | ||
8 | function App() { | 9 | function App() { |
9 | return ( | 10 | return ( |
... | @@ -11,6 +12,7 @@ function App() { | ... | @@ -11,6 +12,7 @@ function App() { |
11 | <Route component={HomePage} path={['/@:username', '/']} exact /> | 12 | <Route component={HomePage} path={['/@:username', '/']} exact /> |
12 | <Route component={LoginPage} path="/login" /> | 13 | <Route component={LoginPage} path="/login" /> |
13 | <Route component={RegisterPage} path="/register" /> | 14 | <Route component={RegisterPage} path="/register" /> |
15 | + <Route component={SettingPage} path="/setting" /> | ||
14 | </> | 16 | </> |
15 | ); | 17 | ); |
16 | } | 18 | } | ... | ... |
1 | +import React from 'react'; | ||
2 | +import styled from 'styled-components'; | ||
3 | +import { NavLink } from 'react-router-dom'; | ||
4 | + | ||
5 | +const categories = [ | ||
6 | + { | ||
7 | + name: 'home', | ||
8 | + text: '홈', | ||
9 | + }, | ||
10 | + { | ||
11 | + name: 'setting', | ||
12 | + text: '설정', | ||
13 | + }, | ||
14 | +]; | ||
15 | + | ||
16 | +const CategoriesBlock = styled.div` | ||
17 | + display: flex; | ||
18 | + padding: 1rem; | ||
19 | + margin: 0 auto; | ||
20 | + @media screen and (max-width: 768px) { | ||
21 | + width: 100%; | ||
22 | + overflow-x: auto; | ||
23 | + } | ||
24 | +`; | ||
25 | + | ||
26 | +const Category = styled(NavLink)` | ||
27 | + font-size: 1.2rem; | ||
28 | + cursor: pointer; | ||
29 | + white-space: pre; | ||
30 | + text-decoration: none; | ||
31 | + color: inherit; | ||
32 | + padding-bottom: 0.25rem; | ||
33 | + &:hover { | ||
34 | + color: #495057; | ||
35 | + } | ||
36 | + & + & { | ||
37 | + margin-left: 2rem; | ||
38 | + } | ||
39 | + &.active { | ||
40 | + font-weight: 600; | ||
41 | + border-bottom: 2px solid #22b8cf; | ||
42 | + color: #22b8cf; | ||
43 | + &:hover { | ||
44 | + color: #3bc9db; | ||
45 | + } | ||
46 | + } | ||
47 | +`; | ||
48 | + | ||
49 | +const Categories = () => { | ||
50 | + return ( | ||
51 | + <CategoriesBlock> | ||
52 | + {categories.map((c) => ( | ||
53 | + <Category | ||
54 | + activeClassName="active" | ||
55 | + key={c.name} | ||
56 | + exact={c.name === 'home'} | ||
57 | + to={c.name === 'home' ? '/' : `/${c.name}`} | ||
58 | + > | ||
59 | + {c.text} | ||
60 | + </Category> | ||
61 | + ))} | ||
62 | + </CategoriesBlock> | ||
63 | + ); | ||
64 | +}; | ||
65 | + | ||
66 | +export default Categories; |
... | @@ -3,6 +3,7 @@ import styled from 'styled-components'; | ... | @@ -3,6 +3,7 @@ import styled from 'styled-components'; |
3 | import Responsive from './Responsive'; | 3 | import Responsive from './Responsive'; |
4 | import Button from './Button'; | 4 | import Button from './Button'; |
5 | import { Link } from 'react-router-dom'; | 5 | import { Link } from 'react-router-dom'; |
6 | +import Categories from './Categories'; | ||
6 | 7 | ||
7 | const HeaderBlock = styled.div` | 8 | const HeaderBlock = styled.div` |
8 | position: fixed; | 9 | position: fixed; |
... | @@ -35,7 +36,7 @@ const UserInfo = styled.div` | ... | @@ -35,7 +36,7 @@ const UserInfo = styled.div` |
35 | margin-right: 1rem; | 36 | margin-right: 1rem; |
36 | `; | 37 | `; |
37 | 38 | ||
38 | -const Header = ({ user, onLogout }) => { | 39 | +const Header = ({ user, onLogout, category, onSelect }) => { |
39 | return ( | 40 | return ( |
40 | <> | 41 | <> |
41 | <HeaderBlock> | 42 | <HeaderBlock> |
... | @@ -43,6 +44,11 @@ const Header = ({ user, onLogout }) => { | ... | @@ -43,6 +44,11 @@ const Header = ({ user, onLogout }) => { |
43 | <Link to="/" className="logo"> | 44 | <Link to="/" className="logo"> |
44 | 작심삼일 | 45 | 작심삼일 |
45 | </Link> | 46 | </Link> |
47 | + <Categories | ||
48 | + category={category} | ||
49 | + onSelect={onSelect} | ||
50 | + className="right" | ||
51 | + /> | ||
46 | {user ? ( | 52 | {user ? ( |
47 | <div className="right"> | 53 | <div className="right"> |
48 | <UserInfo>{user.username}</UserInfo> | 54 | <UserInfo>{user.username}</UserInfo> | ... | ... |
... | @@ -4,6 +4,7 @@ import Header from '../../components/common/Header'; | ... | @@ -4,6 +4,7 @@ import Header from '../../components/common/Header'; |
4 | import { logout } from '../../modules/user'; | 4 | import { logout } from '../../modules/user'; |
5 | const HeaderContainer = () => { | 5 | const HeaderContainer = () => { |
6 | const { user } = useSelector(({ user }) => ({ user: user.user })); | 6 | const { user } = useSelector(({ user }) => ({ user: user.user })); |
7 | + | ||
7 | const dispatch = useDispatch(); | 8 | const dispatch = useDispatch(); |
8 | const onLogout = () => { | 9 | const onLogout = () => { |
9 | dispatch(logout()); | 10 | dispatch(logout()); | ... | ... |
jaksimsamil-page/src/pages/SettingPage.js
0 → 100644
1 | +import React from 'react'; | ||
2 | +import HeaderContainer from '../containers/common/HeaderContainer'; | ||
3 | +import Button from '../components/common/Button'; | ||
4 | + | ||
5 | +const SettingPage = () => { | ||
6 | + return ( | ||
7 | + <div> | ||
8 | + <HeaderContainer /> | ||
9 | + <Button>setting</Button> | ||
10 | + </div> | ||
11 | + ); | ||
12 | +}; | ||
13 | + | ||
14 | +export default SettingPage; |
-
Please register or login to post a comment