2021. 12. 19. 22:10ใWEB Dev/ToyProject
๐ท CloneTodo โ - Todomate Clone Project | Team CloneMate
CloneTodo : ๋ง์ ์ฌ๋๋ค์ด ์ฌ๋ํ๋ ํฌ๋๋ฉ์ดํธ๋ฅผ ํด๋ก ํ์ฌ ์น ์๋น์ค๋ฅผ ๋ฐฐํฌํด๋ณด๋ ํ๋ก์ ํธ
์ด์ ๋ ๊ฐ ๋ฟ์ฌ...
์ค๋์ todo
โ ๊ฐ์ ํ๊ธฐ ์ปดํฌ๋ํธ
โ ๊ธฐ๋ณธ NavBar ์ปดํฌ๋ํธ
โก ๋ฉ์ธ NavBar ์ปดํฌ๋ํธ
โก ๋ฉ์ธ Feed ์ปดํฌ๋ํธ
โ ๊ฐ๋ฅํ๋ฉด ๊นํ ํธ์คํ ์ผ๋ก ๋ฐฐํฌ๊น์ง
3. ๋ฉ์ธ NavBar ์ปดํฌ๋ํธ
๋ฉ์ธ์ ๊ธฐ๋ณธ๋ณด๋ค ์กฐ๊ธ ๋ ๋ณต์กํ๋ฐ ํ๋ฒ๊ฑฐ ๋ฒํผ์ ํด๋ฆญํ๋ฉด Drawer ์ปดํฌ๋ํธ๊ฐ ๋ํ๋์ผ ํ๋ค.
๊ทธ๋ฆฌ๊ณ ๋ฉ์ธํ์ด์ง์์๋ ๋ฉ์ธ NavBar๊ฐ ๋ํ๋๊ณ ๋๋จธ์ง ํ์ด์ง์์๋ ์๊น ๋ง๋ BasicNavBar ๊ฐ ๋ํ๋์ผ ํ๋ค.
- Route ๋ง๋ค NavBar ์ ์ฉํ๊ธฐ
์ผํญ์ฐ์ฐ์๋ฅผ ์ธ๊น ํ๋๋ฐ, ๊ทธ๋ฅ Route ๋ณ๋ก ์ ์ฉํด๋ ๋๊ฒ ๋ค ์ถ์์ (๊ฐ๋ณ ์ปดํฌ๋ํธ์ ๋ฐ๋ก ๋ฃ์ด๋ ๋๊ณ ..)
ํ๋ฉด ์ Main ํ์ด์ง๋ฅผ ๋ณ๋๋ก ๋ง๋ค์ด์ผ ํ๋๋ฐ (์ธ์ ์ด ์๋ ์ํ์์์ ์ฒซ ํ๋ฉด์ด ์๋ ์บ๋ฆฐ๋์ ํผ๋๊ฐ ์๋ ํ๋ฉด)
์์ง Main์ ์ง์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ App.js ์๋จ์ ๋ถ์ฌ๋๋ค.
import React from "react";
import "../stylesheets/App.css";
import { Button } from "@mui/material";
import { ThemeProvider, createTheme } from "@mui/material/styles";
import { Switch, Route, useHistory } from "react-router-dom";
import Signin from "./Signin";
import Join from "./Join";
import BasicNavBar from "./BasicNavBar";
import MainNavBar from "./MainNavBar";
const theme = createTheme({
components: {
MuiTypography: {
defaultProps: {
variantMapping: {
h1: 'h2',
h2: 'h2',
h3: 'h2',
h4: 'h2',
h5: 'h2',
h6: 'h2',
subtitle1: 'h2',
subtitle2: 'h2',
body1: 'span',
body2: 'span',
},
},
},
},
typography: {
Link: {
color: '#222',
},
bolder: {
fontWeight: 600,
},
button: {
},
},
palette: {
btn: {
main: "#f2f2f2",
contrastText: "#111",
},
nav: {
main: "#fefefe",
contrastText: "#111",
},
},
});
function App() {
let history = useHistory();
return (
<ThemeProvider theme={theme}>
<Switch>
<Route exact path="/">
<MainNavBar/>
<div className="App">
<div className="header">
<img className="main_img" src="images/todomate.jpg" />
<h1>todo mate</h1>
<h3>ํ ์ผ์ ์์ฑ, ๊ณํ, ๊ด๋ฆฌํ์ธ์.</h3>
</div>
<div className="start_btn">
<Button
className="join_btn"
color="btn"
variant="contained"
onClick={() => {
history.push("/join");
}}
>
๊ฐ์
ํ๊ธฐ
</Button>
<Button
className="signin_btn"
color="btn"
variant="contained"
onClick={() => {
history.push("/signin");
}}
>
๋ก๊ทธ์ธ
</Button>
</div>
</div>
</Route>
<Route exact path="/join">
<BasicNavBar/>
<Join />
</Route>
<Route exact path="/signin">
<BasicNavBar/>
<Signin />
</Route>
</Switch>
</ThemeProvider>
);
}
export default App;
์ ์ ์ปดํฌ๋ํธ๊ฐ ๊ธธ์ด์ง๊ณ ์๋ ๋๋์ด์ง๋ง...
MainNavBar์์๋ ์์ด์ฝ์ด 2๊ฐ ํ์ํ๋ฐ, ์ฐ์ธก์ ๋ณด๊ดํจ ์์ด์ฝ๊ณผ ํ๋ฒ๊ฑฐ ์์ด์ฝ์ด๋ค.
(ํ๋ฒ๊ฑฐ๋ ≡ ์ ๊ฐ์ ์์ด์ฝ์ ๋งํ๋ค.)
ํ๋ฒ๊ฑฐ ์์ด์ฝ์ ๊ธฐ๋ณธ AppBar ์ปดํฌ๋ํธ์ MenuIcon ์ด๋ผ๋ ํจํค์ง๋ก ํ์ํ ์ ์์ง๋ง ๋ด ๋ฆฌ์กํธ์๋ ๋ฒ์ ์ด ๋ง์ง ์์ v4์ Dehaze๋ผ๋ ํจํค์ง๋ฅผ ์ฌ์ฉํ๋ค. (๋ฆฌ์กํธ ๋ผ์ฐํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์ ๋ฒ์ ์ ๋ค์ด๊ทธ๋ ์ด๋ ํจ)
๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ๋ณด๊ดํจ์ ๋ง๋ค์ง ์๊ธฐ๋ก ํ์ผ๋ ์์ด์ฝ์ ํ๋ฒ๊ฑฐ ํ๋๋ง ํ์ํ๋ค.
MainNavBar.js ์ BasicNavBar.js ์์ ์ฝ๋๋ฅผ ๋ณต์ฌ ๋ถ์ฌ๋ฃ๊ธฐ ํด์ฃผ๊ณ ,
import DehazeIcon from '@material-ui/icons/Dehaze';
์์ ํจํค์ง๋ฅผ import ํด์ค๋ค.
๊ทธ๋ฆฌ๊ณ Main์์๋ ์ฐ์ง ์๋ <NavigationBeforeIcon /> ์ <Typography /> ์ปดํฌ๋ํธ๋ ๋นผ์ค๋ค.
๊ทธ๋ผ ์๋์ ๊ฐ์ด ์ฌํํ MainNavBar ์ฝ๋๊ฐ ์์ฑ๋๋ค.
import React from 'react';
import AppBar from '@mui/material/AppBar';
import Box from '@mui/material/Box';
import Toolbar from '@mui/material/Toolbar';
import IconButton from '@mui/material/IconButton';
import DehazeIcon from '@material-ui/icons/Dehaze';
export default function MainNavBar () {
return (
<Box sx={{ flexGrow: 1 }}>
<AppBar position="static" color="nav" sx={{ boxShadow:"none" }}>
<Toolbar>
<IconButton
size="large"
edge="start"
color="inherit"
aria-label="back"
sx={{ mr: 2 }}
>
<DehazeIcon />
</IconButton>
</Toolbar>
</AppBar>
</Box>
);
}
ํ๋ฒ๊ฑฐ ์์ด์ฝ์ ์ฐ์ธก์ผ๋ก ๊ฐ์ผํ๊ธฐ ๋๋ฌธ์ ์ฝ๋ ์์ ์ด ํ์ํ๋ค.
flex ์์๋ฅผ ๋ฐ๊ฟ์ผ ํ๊ธฐ ๋๋ฌธ์ flexDirection : row-reverse๋ฅผ ์ค์ผ ํ๋๋ฐ ๊ฐ๋ฐ์๋๊ตฌ๋ก ๋ณด๋ AppBar ์ปดํฌ๋ํธ์ flex-direction์ ์ฃผ๋ฉด ๋์ด์ AppBar ์ปดํฌ๋ํธ์ sx์ flexDirection: row-reverse๋ฅผ ์ค๋ค.
๊ทธ๋ฆฌ๊ณ ๋ฐฐ๊ฒฝ์์๊ฐ๊ณผ height ๊ฐ์ ์๋ณธ๊ณผ ์ ์ฌํ๊ฒ ์กฐ์ ํด์ค๋ค.
import React from 'react';
import AppBar from '@mui/material/AppBar';
import Box from '@mui/material/Box';
import Toolbar from '@mui/material/Toolbar';
import IconButton from '@mui/material/IconButton';
import DehazeIcon from '@material-ui/icons/Dehaze';
export default function MainNavBar () {
return (
<Box>
<AppBar position="static" color="mainnav" sx={{ boxShadow:"none", flexDirection:"row-reverse", height: '90px', borderTop: '1px solid #CCCDCD', boxSizing:'border-box' }}>
<Toolbar>
<IconButton
size="large"
edge="start"
color="inherit"
aria-label="back"
sx={{ mr: 2 }}
>
<DehazeIcon />
</IconButton>
</Toolbar>
</AppBar>
</Box>
);
}
์ด๋ ๊ฒ ์ ๋ ฅํด์ฃผ๋ฉด
์ด๋ ๊ฒ ์์โฃ NavBar๋ฅผ ๋ง๋ ์ ์๋ค.
๋๋จธ์ง๋ ๋ด์ผ ๐๐๐๐
'WEB Dev > ToyProject' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ToyProject-Todomate] ํฌ๋๋ฉ์ดํธ ํด๋ก ํ๋ก์ ํธ 15 (0) | 2021.12.22 |
---|---|
[ToyProject-Todomate] ํฌ๋๋ฉ์ดํธ ํด๋ก ํ๋ก์ ํธ 14 (0) | 2021.12.21 |
[ToyProject-Todomate] ํฌ๋๋ฉ์ดํธ ํด๋ก ํ๋ก์ ํธ 12 (0) | 2021.12.19 |
[ToyProject-Todomate] ํฌ๋๋ฉ์ดํธ ํด๋ก ํ๋ก์ ํธ 11 (0) | 2021.12.19 |
[ToyProject-Todomate] ํฌ๋๋ฉ์ดํธ ํด๋ก ํ๋ก์ ํธ 10 (0) | 2021.12.15 |