-
[ToyProject-Todomate] ํฌ๋๋ฉ์ดํธ ํด๋ก ํ๋ก์ ํธ 11WEB Dev/ToyProject 2021. 12. 19. 15:06728x90
๐ท CloneTodo โ - Todomate Clone Project | Team CloneMate
CloneTodo : ๋ง์ ์ฌ๋๋ค์ด ์ฌ๋ํ๋ ํฌ๋๋ฉ์ดํธ๋ฅผ ํด๋ก ํ์ฌ ์น ์๋น์ค๋ฅผ ๋ฐฐํฌํด๋ณด๋ ํ๋ก์ ํธ
์ฌํ๋์ ๋ฆฌ์กํธ๋ฅผ ๋ง์ง์ง ๋ชปํ๋ค. ํ์ฌ ์ผ์ด ๋ง์์ ์ง์ ์ค๋ฉด ์ง์ณ ์ฐ๋ฌ์ง ๐
์ค๋ ํ ์ผ์ ์ต๋ํ ๋ง์ ํ์ด์ง ๊ตฌํํ๊ธฐ!
๋งํฌ์ ๊ณผ CSS๋ ๋์์ ๋ง์ง๋, CSS๋ ์์ฃผ ๊ฐ๋จํ๊ฒ ๊ตฌ์ฑ๋ง ์ก๋ ๊ฒ์ผ๋ก ํ๊ณ ์ถํ SCSS ๋ฅผ ์ ์ฉํด๋ณผ๊น ํ๋ค.
MUI๊ฐ ๊ธฐ๋ณธ์ ์ธ CSS๋ ์ก์์ฃผ๊ธฐ ๋๋ฌธ์ ๋ ์ด์์๋ง ์์ ํ๋ฉด ๋ ๊ฒ ๊ฐ์๋ฐ..
์ค๋์ todo
โก ๊ฐ์ ํ๊ธฐ ์ปดํฌ๋ํธ
โก ๊ธฐ๋ณธ NavBar ์ปดํฌ๋ํธ
โก ๋ฉ์ธ NavBar ์ปดํฌ๋ํธ
โก ๋ฉ์ธ Feed ์ปดํฌ๋ํธ
โ ๊ฐ๋ฅํ๋ฉด ๊นํ ํธ์คํ ์ผ๋ก ๋ฐฐํฌ๊น์ง
1. ๊ฐ์ ํ๊ธฐ ์ปดํฌ๋ํธ
1) ์ปดํฌ๋ํธ ๋ง๋ค๊ธฐ
๊ฐ์ ํ๊ธฐ ์ปดํฌ๋ํธ์๋ Join ์ด๋ผ๋ ์ด๋ฆ์ด ์๊ธฐ ๋๋ฌธ์ ํ์ผ๋ช ์ Join.js๋ก ๋ง๋ค์ด์ค๋ค.
import React from 'react'; function Join(){ } export default Join;
2) ๋ผ์ฐํฐ์ ์ฐ๊ฒฐ
Join์ 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"; const theme = createTheme({ status: { danger: "#e53e3e", }, palette: { primary: { main: "#0971f1", darker: "#053e85", }, neutral: { main: "#64748B", contrastText: "#fff", }, btn: { main: "#f2f2f2", contrastText: "#111", }, }, }); function App() { let history = useHistory(); return ( <ThemeProvider theme={theme}> <Switch> <Route exact path="/"> <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"> <Join /> </Route> <Route exact path="/signin"> <Signin /> </Route> </Switch> </ThemeProvider> ); } export default App;
์ด๋ ๊ฒํ๋ฉด /join์ ํตํด์ join ํ์ด์ง๋ฅผ ํ์ธํ ์ ์๋ค.
3) Join ์ปดํฌ๋ํธ ๋ง๋ค๊ธฐ
์ฌ์ค ํ์๊ฐ์ ํ์ด์ง๋ ์ ๋ฒ์ ๋ง๋ ๋ก๊ทธ์ธ ํ์ด์ง์ ๋ ์ด์์์ด ์์ ํ ๊ฐ๋ค..!
ํ์๊ฐ์ ํ์ด์ง / ๋ก๊ทธ์ธ ํ์ด์ง ๊ทธ๋์ ๋ก๊ทธ์ธ ํ์ด์ง์ ์ฝ๋๋ฅผ ๊ฐ์ ธ๋ค๊ฐ ํ๋จ์ ํ ์คํธ๋ง ๋ณ๊ฒฝํ๋ฉด ๋๋ค.
์ ๋ฒ์ ๋ง๋ Signin.js ํ์ด์ง์ ์ฝ๋๋ฅผ ๊ทธ๋๋ก ๊ฐ์ง๊ณ ์จ๋ค (CSS๋ ๋์ผํ๊ฒ ์ ์ฉํ ์ ์์)
๊ทธ๋ฆฌ๊ณ ํ์๊ฐ์ ํ์ด์ง์ ๋ง๊ฒ ํ ์คํธ๋ฅผ ์์ ํด์ค๋ค.
์ด์ฉ์ฝ๊ด๊ณผ ๊ฐ์ธ์ ๋ณด ์ ์ฑ ์ Link ๋ก ๋ค๋ฅธ ํ์ด์ง์ ์ฐ๊ฒฐ๋ ์ ์๋๋ก ํ๋ค. (๋์ค์ ๋ง๋ค ํ์ด์ง ์ด๋ฆ์ด text๋ผ text๋ก ์ฐ๊ฒฐ๋ ์ ์๋๋ก ๋ฏธ๋ฆฌ ์ง์ )
import React from 'react'; import { useState } from "react"; import { useForm } from "react-hook-form"; import '../stylesheets/Signin.css'; import { TextField } from '@mui/material'; import { Link } from 'react-router-dom'; function Join(){ const { register, handleSubmit } = useForm(); const [result, setResult] = useState(""); const onSubmit = (data) => setResult(JSON.stringify(data)); return ( <form onSubmit={handleSubmit(onSubmit)}> <TextField {...register("Email")} id="standard-email-input" label="์ด๋ฉ์ผ" type="email" autoComplete="current-email" variant="standard" helperText="Please enter Email" margin="dense" fullWidth /> <TextField {...register("Password")} id="standard-password-input" label="๋น๋ฐ๋ฒํธ" type="password" autoComplete="current-password" variant="standard" helperText="Please enter Password" margin="dense" fullWidth /> <input className="join_btn" type="submit" value={"ํ์ธ"}/> <div className='join_txt'> <p> ๊ฐ์ ํ๋ฉด: <br /> • ๋ค๋ฅธ ๊ธฐ๊ธฐ์์ ๋ก๊ทธ์ธ ๊ฐ๋ฅํฉ๋๋ค.<br /> • ๋ค๋ฅธ ์ฌ์ฉ์๋ค๊ณผ ํจ๊ป ํ ์ ์์ต๋๋ค. </p> <p>๊ฐ์ ์ ๋ค์ ์ฌํญ์ ๋์ํ๋ ๊ฒ์ผ๋ก ๊ฐ์ฃผํฉ๋๋ค. <Link to="/text" className='termOfUse'>์ด์ฉ์ฝ๊ด</Link>๊ณผ <Link className='policy' to="/text">๊ฐ์ธ์ ๋ณด ์ ์ฑ </Link> </p> </div> </form>) } export default Join;
์ด๋ ๊ฒ ํด์ฃผ๋ฉด ํ์๊ฐ์ ํ์ด์ง๋ ์์ฑ!
ํ์๊ฐ์ ๊ฐ๋จํด์ ์ข๋น!
* ์ถ๊ฐ๋ก ํ์ํ ์ฌํญ ์ฐธ๊ณ ์๋ฃ
[React] 5๋จ๊ณ๋ก ๋ณด๋ ๋ฆฌ์กํธ ํด๋๊ตฌ์กฐ
์ด ๊ธ์ ๋ค์ ๊ธ์ ๋ฒ์ญํ ๊ธ์ ๋๋ค: React Folder Structure in 5 Steps React Folder Structure in 5 Steps - RWieruch How to structure large React apps into folders and files for a scalable React projec..
smoh.tistory.com
๋ฆฌ์กํธ ํด๋๋ฅผ ์กฐ๊ธ ๋ ์ธ๋ถํํด์ 2๋ช ์ด ๋๋ ์ ์ ๋ฌด๋ฅผ ๋ถ๋ฐฐํ ์ ์๋๋ก ๋ง๋ค๊ธฐ..!
728x90'WEB Dev > ToyProject' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ToyProject-Todomate] ํฌ๋๋ฉ์ดํธ ํด๋ก ํ๋ก์ ํธ 13 (0) 2021.12.19 [ToyProject-Todomate] ํฌ๋๋ฉ์ดํธ ํด๋ก ํ๋ก์ ํธ 12 (0) 2021.12.19 [ToyProject-Todomate] ํฌ๋๋ฉ์ดํธ ํด๋ก ํ๋ก์ ํธ 10 (0) 2021.12.15 [ToyProject-Todomate] ํฌ๋๋ฉ์ดํธ ํด๋ก ํ๋ก์ ํธ 09 (0) 2021.12.14 [ToyProject-Todomate] ํฌ๋๋ฉ์ดํธ ํด๋ก ํ๋ก์ ํธ 08 (0) 2021.12.13