๐ย ๋ฏธ๋ผํด ๋ฉ๋ชจ๋ฆฌ ์ฑ์ "๋ฏธ๋ผํด ๋ชจ๋"์ ์๊ฐ์ ๋ฐ์ ์ ์๋ ์ดํ๋ฆฌ์ผ์ด์
์
๋๋ค
๐๏ธ ํน๋ณํ ์ถ์ ๋งค์ผ ๋์์๋ ๊ธฐ๋ก์ ํตํด ์์ฑ๋๋ค๊ณ ๋ฏฟ์ต๋๋ค.
โ
"๊ธฐ์ ์ ์์นจ"์ ๋์์ฃผ๋ ๋ฏธ๋ผํด ๋ฉ๋ชจ๋ฆฌ ์ฑ์ ํตํด์ ๋งค์ผ ํน๋ณํ ์์นจ์ ๊ธฐ๋กํ์ธ์.
- FrontEnd: React, Redux, Styled-components, LocalStorage
- [ ๋ฏธ๋ผํด ๋ฉ๋ชจ๋ฆฌ ] State ๋์ด์ฌ๋ฆฌ๊ธฐ
- [ ๋ฏธ๋ผํด ๋ฉ๋ชจ๋ฆฌ ] useRef? ์๋๋ฉด useState?
- [ ๋ฏธ๋ผํด ๋ฉ๋ชจ๋ฆฌ ] ํ๋กญ์ค ๋๋ฆด๋ง๊ณผ Delete
- [ ๋ฏธ๋ผํด ๋ฉ๋ชจ๋ฆฌ ] Updata
- [ ๋ฏธ๋ผํด ๋ฉ๋ชจ๋ฆฌ ] API ํ์ฉํ์ฌ ๋ฐ์ดํฐ ๋ถ๋ฌ์ค๊ธฐ
- [ ๋ฏธ๋ผํด ๋ฉ๋ชจ๋ฆฌ ] ๋ฉ๋ชจ์ด์ ์ด์ ์ด๋?
- [ ๋ฏธ๋ผํด ๋ฉ๋ชจ๋ฆฌ ] HOC์ ์ฌ์ฉํ ์ปดํฌ๋ํธ ์ต์ ํ #React.Memo #๋ถ๋ณ์ฑ #HOC
- [ ๋ฏธ๋ผํด ๋ฉ๋ชจ๋ฆฌ ] useCallback ํ์ฉํ์ฌ ๋ถํ์ํ ๋ ๋๋ง ๋ง๊ธฐ
- [ ๋ฏธ๋ผํด ๋ฉ๋ชจ๋ฆฌ ] ๋ฆฌ๋์ค๋ฅผ ์ฌ์ฉํ์ฌ ์ํ๋ก์ง ๋ถ๋ฆฌํ๊ธฐ
- [ ๋ฏธ๋ผํด ๋ฉ๋ชจ๋ฆฌ ] UseContext๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ญ์์ ๋ฐ์ดํฐ ๊ณต๊ธํ๊ธฐ
- [ ๋ฏธ๋ผํด ๋ฉ๋ชจ๋ฆฌ ] ๋ณธ๊ฒฉ์ ์ผ๋ก Reducer ํ๊ฒฝ ๊ตฌ์ถํ๊ธฐ
- [๋ฏธ๋ผํด ๋ฉ๋ชจ๋ฆฌ] new Date๋ฅผ ์ฌ์ฉํ์ฌ ๋ ์ง๋ณ ๋ฐ์ดํฐ ํ์ํ๊ธฐ
- [ ๋ฏธ๋ผํด ๋ฉ๋ชจ๋ฆฌ ] ๊ฐ์ฒด ๊น์ ๋ณต์ฌํ์ฌ sort ๊ตฌํํ๊ธฐ
- [ ๋ฏธ๋ผํด ๋ฉ๋ชจ๋ฆฌ ] ํด๋ก์ ํ์ฉํ์ฌ Date๊ฐ ๊ด๋ฆฌํ๊ธฐ
- [ ๋ฏธ๋ผํด ๋ฉ๋ชจ๋ฆฌ ] isSelected๋ฅผ ํ์ฉํ์ฌ ์คํ์ผ๋งํ๊ธฐ
- [ ๋ฏธ๋ผํด ๋ฉ๋ชจ๋ฆฌ ] Edit Page์ ๋ฐ์ดํฐ ๋๊ธฐ๊ธฐ
- [ ๋ฏธ๋ผํด ๋ฉ๋ชจ๋ฆฌ ] ์น ์ ์ฅ์ LocalStorage ํ์ตํ๊ธฐ
- [ ๋ฏธ๋ผํด ๋ฉ๋ชจ๋ฆฌ ] ์ปดํฌ๋ํธ ๋ ๋๋ง ์ต์ ํํ๊ธฐ - (Home) - ContolMenu
- [ ๋ฏธ๋ผํด ๋ฉ๋ชจ๋ฆฌ ] ์ปดํฌ๋ํธ ๋ ๋๋ง ์ต์ ํํ๊ธฐ - (Home) - Diaryitem
- [ ๋ฏธ๋ผํด ๋ฉ๋ชจ๋ฆฌ ] ์ปดํฌ๋ํธ ๋ ๋๋ง ์ต์ ํํ๊ธฐ - (Edit) - DiaryEditor
- [ ๋ฆฌํฉํ ๋ง ] Module, Oaginism, Template, Page ๊ตฌ์กฐ์ ์ํ ๋ฏน ๋์์ธ ํจํด ์ ์ฉํ๊ธฐ
- [ ๋ฆฌํฉํ ๋ง ] ๋ฆฌ๋์ค ์ดํดํ๊ธฐ ๋ฐ Ducks ํจํด ์ตํ๊ธฐ
- [ ๋ฆฌํฉํ ๋ง ] ์ปจํ ์ด๋ ์ปดํฌ๋ํธ, ํ๋ฆฌ์ ํ ์ด์ ๋ ์ปดํฌ๋ํธ ๊ตฌ๋ถ์ง๊ธฐ
- [ ๋ฆฌํฉํ ๋ง ] redux ํ๊ฒฝ ํ๋ก์ ํธ์ ์ ์ฉํ๊ธฐ ๋ฐ LocalStorage ์ ์ฉํ๊ธฐ
- [ ๋ฆฌํฉํ ๋ง ] ์ปดํฌ๋ํธ ์ต์ ํ ํ์ฌ ๋ถํ์ํ ๋ฆฌ-๋ ๋๋ง ๋ง๊ธฐ
- [ ๋ฆฌํฉํ ๋ง ] lodash ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด ๊น์ ๋ณต์ฌํ๊ธฐ
- [ ๋ฆฌํฉํ ๋ง ] Automic Design System
- [ ๋ฆฌํฉํ ๋ง ] Redux Ducks Patten
- [ ํผ๋๋ฐฑ ์ ์ฉํ๊ธฐ ] ์ฌ์ฉ์ ๊ฒฝํ ํฅ์์ ์ํ ํผ๋๋ฐฑ ๋ฐ๊ธฐ
- [ ํผ๋๋ฐฑ ์ ์ฉํ๊ธฐ ] ์์๋ณ์ ์ ๊ฑฐํ๊ธฐ
- [ ํผ๋๋ฐฑ ์ ์ฉํ๊ธฐ ] ๋ ์จ API ๋ถ๋ฌ์ค๊ธฐ
- [ ํผ๋๋ฐฑ ์ ์ฉ ์๋ฃ ] ํผ๋๋ฐฑ ๋ฐ์ํ๊ธฐ
- ์ต์ ๋ ์ฒด์ด๋ ์ฐ์ฐ์ ์ฌ์ฉํ์ฌ ์๋ฌ ํด๊ฒฐํ๊ธฐ
- LocalStorage์ ๋ฐ์ดํฐ ์ ์ฅ ์ ์ค๋ณต ํค ๋ฌธ์ ํด๊ฒฐํ๊ธฐ
- Automic Patten DX
- Redux ducks patten
- Closuer๋ฅผ ํ์ฉํ ์ ๋ณ ๋ฐ์ดํฐ ์ํ ๋ณ๊ฒฝ
- ๊ฒ์๊ธ Carete/ Read/ Update/ Delete
- sort, filter ๋ฉ์๋๋ฅผ ํ์ฉํ ๋ฐ์ดํฐ ๋ ์ง๋ณ ์ ๋ ฌ ๋ฐ ํํฐ๋ง
- ์ก์ํ, ์จ๋ฒํ UI
- Splash Screen
- Active Button
| 0.Splash | 1.ํํ๋ฉด |
|---|---|
![]() |
![]() |
| 2.ํํ๋ฉด - ์จ๋ฒ,๋ฆฌ์คํธ | 3.ํํ๋ฉด - ์ต์ |
|---|---|
![]() |
![]() |
| 4.Create | 5.Update |
|---|---|
![]() |
![]() |
| 6.Delete | 7.Detail |
|---|---|
![]() |
![]() |
์ํ ๋ฏน ๋์์ธ ํจํด์ด๋ ?
โ ๋์์ธ ์์๋ค์ ๋๋์ด ํ์ ํ๊ณ ์ด ์์๋ค์ด ์กฐํฉ๋๋ ๊ณผ์ ์ ํตํด์ ๋์์ธ์ ๊ตฌ์ฑํ๋ ๋ฐฉ์ โ
์ถ์ฒ: ์ํ ๋ฏน๋์์ธ(Atomic Design) ๋ฐฉ๋ฒ๋ก , ๊ฐ๋จํ๊ฒ ์ดํดํ๊ณ ์์ฉํ๊ธฐ
ATOM์ต์ ๋์์ธ ์์๋ค์ Atoms(์์๋ค)๋ก ํ์ ํ๋คMOLECULESAtoms๋ค์ด ์กฐํฉ๋์ด MOLECULES(๋ถ์๋ค)์ ํ์ฑํ๋คORGANISMSMOLECULES(๋ถ์๋ค)์ด ์กฐํฉ๋์ด ๋ณด๋ค ํฐ ์๋ฏธ ๋จ์์ธ ORGANISMS(์ ๊ธฐ์ฒด)๋ฅผ ๊ตฌ์ฑํ๋คTEMPLATESORGANISMS(์ ๊ธฐ์ฒด)์ด ๋ชจ์ฌ ๊ตฌ์ฑํ๋ ์ค์ง์ ๋์์ธ ํ๋ฉด์ด๋ค.PAGESTEMPLATES(ํ ํ๋ฆฟ)๋ค์ด ์ํฉ๊ณผ ์ปจํ ์ธ ์ ๋ง๊ฒ ์ ์ฉ๋๋ฉด์ PAGES(ํ์ด์ง)๋ฅผ ๊ตฌ์ฑํ๋ค.
๋ ์ฒด๊ณ์ ์ธ๊ฒ์ ์ข์ํ๊ณ ์ ๋ฆฌํ๋ ๊ฒ์ ์ข์ํ๋ค. ๊ฐ๋ฐ์ ํ๋๋ฐ ์์ด์ ํ๋ก์ ํธ์ ์ฒด๊ณํ๊ฐ ์กํ์๋ค๋ฉด ๋ฐ์ดํฐ์ ํ๋ฆ์ ๋น ๋ฅด๊ฒ ์ดํดํ ์ ์๋ค. ๊ทธ ์ค์์๋ ๋ฆฌ์กํธ์ ์ปดํฌ๋ํธ ๋จ์์ ๋ชจ๋๊ณผ ํจ๊ป ์ ๊ฐ์ถ์ด์ง ๋์์ธ ์์คํ ์ ๊ฐ๊ณ ์๋ค๋ฉด ์ ์ง๋ณด์๋ฅผ ํ๊ธฐ ํธํ ๋ฟ ์๋๋ผ ๋ค๋ฅธ ์ฌ๋๋ค๊ณผ ํจ๊ป ํ์ ์ ํ๋๋ฐ ์์ด์๋ ์ ๋ฆฌํ๋ค. ์ฝ๊ฒ ๋งํด์ ์ํ ๋ฏน ๋์์ธ ํจํด์ ์ ์ฉํ๋ฉด ๊ฐ์ฒด์งํฅ๋์์ธ ํจํด์ ์ฅ์ ์ธ ์ฌ์ฌ์ฉ์ฑ, ์์์ฑ ํฅ์, ์์ฐ์ ์ธ ๋ชจ๋ธ๋ง, ์ ์ง๋ณด์์ ์ฐ์์ฑ์ ๊ฐ์ ธ๊ฐ ์ ์๋ค. ๋ค๋ง ๋จ์ ์ผ๋ก๋ ์ฉ๋์ด ์ปค์ง ์ ์๋ ๋ถ๋ถ๊ณผ ์ค๊ณ๋จ๊ณ์ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฐ๋ค๋ ๊ฒ์ ์์์ผ ํ๋ค.
Automic Design ํจํด ์ ์ฉ ์คํจ ๊ฒฝํ
์ง๋๋ฒ ํ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉด์ ์ฒ์์ผ๋ก ์ํ ๋ฏน ๋์์ธ ํจํด์ ์๊ฒ๋์๊ณ ์ํ ๋ฏน ๋์์ธ ํจํด์ ๊ตฌํํ๋ ค๊ณ ํ๋ค. ํ์ง๋ง ๋ฆฌ์กํธ์์ ์ํ๊ด๋ฆฌ๋ฅผ ์ด๋ป๊ฒ ํด์ผํ๋์ง ์ดํดํ์ง ๋ชปํ๋ค. ์ํ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ Redux์ ๋ํ ์ดํด๋๊ฐ ๋ฎ์๊ธฐ ๋๋ฌธ์ ๊ฒฐ๊ตญ ๋์ ํ๋ ค๋ค๊ฐ ์คํจํ๋ค. ํ์ง๋ง ์ด์ ๋ Redux๋ฅผ ํตํ ์ํ๊ด๋ฆฌ๊ฐ ์ด๋ค ํ๋ฆ์ผ๋ก ์งํ์ด ๋๋์ง, ๊ทธ๋ฆฌ๊ณ ๋ฆฌ์กํธ๋ ์ด๋จ ๋ ๋ฆฌ-๋ ๋๋ง์ด ๋๋์ง, ๋ฆฌ-๋ ๋๋ง์ ์ต์ ํ ํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผํ๋์ง ์ด๋์ ๋ ํ๋ฆ์ ์ดํดํ๋ค๊ณ ์๊ฐํ๋ค. ๊ทธ๋ ๊ธฐ์
Tree ๊ตฌ์กฐ
ํด๋ ๊ตฌ์กฐ
Componentํด๋ ํ์์ atom, molecule, organisms, template์ผ๋ก ๊ตฌ์ฑํ๋ค
์ต์ ๋์์ธ ์์๋ค๋ก ๊ตฌ์ฑ
์์ ์ฝ๋const Button = ({ text, type, onClick }) => { const btnType = ["positive", "negative"].includes(type) ? type : "default"; return ( <StyledButton className={btnType} onClick={onClick}> {text} </StyledButton> ); }; export default Button;
Atoms๋ค์ด ์กฐํฉ๋์ด MOLECULES(๋ถ์๋ค)์ ํ์ฑํ๋ค
์์ ์ฝ๋import CommonText from "../../atom/text/CommonText"; const HomeInfoBox = ({ onClick, date, content }) => { return ( <Wrapper onClick={onClick}> <CommonText descript={content} size={18} /> </Wrapper> ); }; export default HomeInfoBox;
MOLECULES(๋ถ์๋ค)์ด ์กฐํฉ๋์ด ๋ณด๋ค ํฐ ์๋ฏธ ๋จ์์ธ ORGANISMS(์ ๊ธฐ์ฒด)๋ฅผ ๊ตฌ์ฑํ๋ค
-
์์ ์ฝ๋import SubTitleBox from "../../molecule/common/SubTitleBox"; import EditorEmotionList from "./EditorEmotionList"; const EditorEmotionItem = () => { return ( <section> <SubTitleBox /> <EditorEmotionList /> </section> ); }; export default EditorEmotionItem;
- Organism์ Molecule๋ค์ ์งํฉ์ผ๋ก ์ด๋ฃจ์ด์ ธ์๋ค. ์ฑ๊ฒฉ์ ๋ฐ๋ผ์ List๊ฐ ๋ ์ ์๊ณ Item์ด ๋ ์ ์๋ค. ์๋ฅผ๋ค์ด Organism์ ์ฑ๊ฒฉ์ ๋๊ณ ์์ง๋ง Organism ์์ ์์์ ๋ ๋ค๋ฅธ Organism์ด ์กด์ฌํ ๊ฒฝ์ฐ List > Item ์ผ๋ก ๊ตฌ๋ถ์ง๋๋ค.
Organism in Organism
์๋ฅผ๋ค๋ฉด ๊ฐ ๊ฒ์๊ธ ํ๋๋ Organism Item์ ์ฑ๊ฒฉ์ ๊ฐ์ง๊ณ ์๋ค. 3๊ฐ์ ๋ถ์๊ฐ ๋ชจ์ฌ ๊ตฌ์ฑ๋ Case์ด๊ธฐ ๋๋ฌธ์ด๋ค. ํ์ง๋ง ์ด ๊ฒ์๋ฌผ์ ๋ด๊ณ ์๋ Organism ์ญ์ Organism์ ๊ตฌ์ฑ์์๋ก ๋ณผ ์ ์๋ค. ์ด ์ธ์๋ Edit ํ์ด์ง์ EidtorEmotionItem๊ณผ List๋ ๋์ ๋์์ Organism ์ฑ๊ฒฉ์ ๊ฐ๊ณ ์๋ค. ์ด๋ก์จ ๋ ๊ฐ์ง ์ํฉ์ด ๊ฐ๋ฅํ๋ค
- List ์ฑ๊ฒฉ์ ๊ฐ์ง Organism์ด Item ์ปดํฌ๋ํธ์ ์ํ๋ ๊ฒฝ์ฐ
- Item ์ฑ๊ฒฉ์ ๊ฐ์ง Organism์ด List ์ปดํฌ๋ํธ์ ์ํ๋ ๊ฒฝ์ฐ.
์ด๋ฐ ์ํฉ์๋ UI์ ์์ฑ์ ๋ง๊ฒ Organism > Organim์ผ๋ก ๋ถ๋ฅ๋ฅผ ํด์ฃผ์๋ค.
-
์์์ฝ๋import HomeSelectItem from "../organisms/home/HomeSelecItem"; import HomeMemoList from "../organisms/home/HomeMemoList"; const HomeContainer = ({ MonthData }) => { const [sortType, setSortType] = useState("latest"); const [filter, setFilter] = useState("all"); return ( <Article> <HomeSelectItem sortType={sortType} setSortType={setSortType} filter={filter} setFilter={setFilter} /> <HomeMemoList filter={filter} sortType={sortType} MonthData={MonthData} /> </Article> ); }; export default HomeContainer; // HomeSelectItem ์ปดํฌ๋ํธ์ HomeMemoList ์ปดํฌ๋ํธ๋ ๋์ผํ ์ํ๊ฐ์ ๊ณต์ ํ๋ค.
-
TEMPLATESORGANISMS(์ ๊ธฐ์ฒด)์ด ๋ชจ์ฌ ๊ตฌ์ฑํ๋ ์ค์ง์ ๋์์ธ ํ๋ฉด์ด๋ค.
Template์ Container๋ผ๋ ํ์ผ๋ช ์ผ๋ก ๊ด๋ฆฌ๋๋ค. Template์ Organism์ ์งํฉ์ผ๋ก ์ด๋ฃจ์ด์ง UI๋ฅผ ์๋ฏธํ๋ค. ๋ณดํต Template์ ๋ Organism์ด ํ๋ฉด์ ๋ณด์ฌ์ง ์ํ๊ฐ์ ๊ณต์ ํ ๋ ๋ฌถ์ฌ์ง๋ค.
PAGESTEMPLATES(ํ ํ๋ฆฟ)๋ค์ด ์ํฉ๊ณผ ์ปจํ ์ธ ์ ๋ง๊ฒ ์ ์ฉ๋๋ฉด์ PAGES(ํ์ด์ง)๋ฅผ ๊ตฌ์ฑํ๋ค.
import CommonHeader from "../components/organisms/common/CommonHeader";
import HomeContainer from "../components/template/HomeContainer";
const Home = () => {
return (
<>
<CommonHeader />
<HomeContainer />
</>
);
};
export default Home;- ๋ง์ง๋ง์ผ๋ก ํ๋ฉด์ ๋ณด์ฌ์ง Template๊ณผ Organism์ ๋ ์ด์์์ ํฉํ์ฌ ํ๋ฉด์ ์ค์ ๋ก ๋ณด์ฌ์ง ์์๋ค๋ก ๊ตฌ์ฑ์ ์ํจ๋ค. ์ด๋ก์จ ํ์ด์ง์ ํ๋ฉด์ ๊ตฌ์ฑํ๋ค. ์ด๋ template์ผ๋ก ๋ฌถ์ด์ง ์์๋ค์ ํน์ง์ ์๋ก๊ฐ ์ํ๊ฐ์ ๊ณต์ ํ๋ค๋ ๊ฒ์ด๋ค.
์ปดํฌ๋ํธ ๋ฆฌ-๋ ๋๋ง ์ต์ ํ์ ๋ํ ๊ฐ์ด๋๋ผ์ธ์ ์ ๋๋ก ์ก๊ณ ๋ค์ ํ์ตํ๋๋กํ์
- State ์ ์ธ ์์น์ ์ค์์ฑ
- ๊ฐ์ฒด ํ์ ์ State๋ ์ต๋ํ ๋ถํ ํ์ฌ ์ ์ธํ๊ธฐ
- React.Memo๋ฅผ ์ด์ฉํ ์ปดํฌ๋ํธ ๋ฉ๋ชจ์ด์ ์ด์
- useMemo๋ฅผ ํตํ ๋ณ์ ๋ฉ๋ชจ์ด์ ์ด์
- useCallback์ ํตํ ํจ์ ๋ฉ๋ชจ์ด์ ์ด์
๋์์ด๋์ ์ ๋ง ๋ง์ ์ปค๋ฎค๋์ผ์ด์ ์ด ์ผ์ด๋์ผ ํ ๊ฒ ๊ฐ๋ค๋ ์๊ฐ์ด ๋ค์๋ค. ๋์์ด๋ ์ญ์ ์ํ ๋ฏน ๋์์ธ ํจํด์ ๊ณต๋ถํ์ฌ ์ปดํฌ๋ํธ๊ฐ ์ด๋ป๊ฒ ์ฌ์ฌ์ฉ ๋ ์ ์๋์ง ํน์, ์ปดํฌ๋ํธ๊ฐ์ ์ํ๊ฐ ์ด๋ค์์ผ๋ก ๊ณต์ ๊ฐ ๋๋์ง๋ฅผ ํ์ ํ์ฌ ๋์์ธ์ ์์์ ํ๋ก ํธ์๋ ๊ฐ๋ฐ์์๊ฒ ์ ๋ฌํด์ฃผ๋ฉด ์ํต์ด ์ํ ํ๊ฒ ์ด๋ฃจ์ด ์ง ์ ์๊ฒ ๋ค๋ ์๊ฐ์ด ๋ค์๋ค. ํ์ง๋ง ๊ทธ๋ฐ ์ํฉ์ด ์๋ ๊ฒฝ์ฐ์๋ ์๋ก ์ปค๋ฎค๋์ผ์ด์ ์ ํ๋ฉฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด ๋์๊ฐ์ผ ํ ๊ฒ ๊ฐ๋ค !
EditorCotainer ๊ฐ์ ๊ฒฝ์ฐ์๋ ์ํ๋ฅผ ์ ๋ ฅํจ์ ๋ฐ๋ผ ์ํ๊ฐ์ด ๋ณํ๊ฐ ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์๋ค. ์๋ฅผ๋ค๋ฉด ์ Item์์๋ค์ ํ ๊ตฐ๋ฐ๋ก ๋ฌถ์ด๋ฒ๋ฆฌ๊ณ Props๋ก ์ํ ๋ณ๊ฒฝ์ ํ๋ ์ํ๋ณ๊ฒฝ ํจ์๋ฅผ ์ ๋ฌํ์ฌ ๋ ์ด์์์ ์ข ๋ ๋ช ํํ๊ฒ ๋ถ๋ฆฌ๋ฅผ ํ๋ ๋ฐฉ๋ฒ๋ ์์ง๋ง ๊ทธ๋ ๊ฒ ํ ๊ฒฝ์ฐ Item ์์์ค ํ๋์ ๊ฐ๋ง ๋ณ๊ฒฝ์ด ๋์ด๋ฒ๋ ค๋ ์ปดํฌ๋ํธ ์ ์ฒด๊ฐ ๋ฆฌ-๋ ๋๋ง ๋๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ฒ ๋๋ค. ๊ทธ๋์ Page์ ๊ตฌ์กฐ๋ฅผ ์ด๋ฆฌ์ง ๋ชปํ๊ณ ์ผ๋จ์ EditorContainer์ ๋ชจ๋ Organism์ ๊ตฌ์ฑํ๋ค.
Header Organism ์ปดํฌ๋ํธ๋ผ๋ ๋ถ๋ฆฌํด์ State ๋์ด์ฌ๋ฆฌ๊ธฐ๋ฅผ ํตํด์ ๋ถ๋ฆฌ๋ฅผ ํด์ฃผ๋ ค๊ณ ํ์ผ๋ ์คํ๋ ค ๋ ๋ณต์กํ ๋ฒ๊ทธ๊ฐ ๋ฐ์ํด์ ํด๊ฒฐํ์ง ๋ชปํ๋ค. ์ด ๋ถ๋ถ์ ๋ํด์๋ ์ถํ๊ณผ์ ๋ก ์กฐ๊ธ ๋ ๊ณต๋ถํด ๋ด์ผ ํ ๊ฒ ๊ฐ๋ค.
๊ฒฐ๊ตญ์๋ ์ด๋ฐ ๋์์ธ ์์คํ ์ ์ ์ฉํ๊ธฐ ์ํด์๋ ๋์์ด๋์ ์ ๋ง ๋ง์ ์ปค๋ฎค๋์ผ์ด์ ์ด ์ผ์ด๋์ผ ํ ๊ฒ ๊ฐ๋ค๋ ์๊ฐ์ด ๋ค์๋ค. ๋์์ด๋๊ฐ ์ค๋ก์ง ๋์์ธ์ ๊ด์ ์ผ๋ก๋ง ๋ ์ด์์์ ๋ง๋ค๊ณ ๊ฐ๋ฐ์๊ฐ UI๋ฅผ ๋ง๋ค์ด์ผ ํ๋ ์ํฉ์ด ์จ๋ค๋ฉด ๊ฐ๋ฐ์๋ ๋์์ด๋๊ฐ ์๋ํ๋๋ก ์ปดํฌ๋ํธ๋ฅผ ์ฌ ์ค๊ณํด์ผํ๋ค. ์ด ๊ณผ์ ์์ ์ต์ ํ์ ์ํ๊ด๋ฆฌ๋ฅผ ์ํ์ฌ ํ๋ก์ ํธ ๊ตฌ์กฐ์ ํ๋ฆ์ ๊นจ๋จ๋ฆฌ๋ ์ํฉ์ด ๋ฐ์ํ ์ ์์ ๊ฒ ๊ฐ๋ค๊ณ ์๊ฐํ๋ค.
์ฌ์ฉ์ ์๊ฒฌ
- ๐ฉ๐ป ์ฌ์ฉ์1,2ย ย : IPhone 11 Pro์์๋ ๋ ์ด์์์ด ๊นจ์ง๋๋ค.
์์ธ ๋ถ์
๊ธฐ์กด์ ๋ฐ์ํ ์น์ ๋ง๋ค๊ธฐ ์ํด์ 390px ~ 600px ViewPort๋ฅผ ๊ณ ๋ คํ์ฌ ๋ง๋ค์์. ํ์ง๋ง Ipone 11 Pro ๋ชจ๋ธ ๊ฐ์ ๊ฒฝ์ฐ์๋ ViewPort๊ฐ 375px ๊ธฐ์ค์ด๊ธฐ์ ๋ฐ์ํ ViewPort์ ๊ธฐ์ค์ ๋ณ๊ฒฝํ๊ธฐ๋ก ๊ฒฐ์ ํ์.
๊ฒฝํ ๊ฐ์
- (์ผ) ๊ฐ์ ์ (์ค) ๊ฐ์ ํ
- 360px ~ 600px ๋จ์๋ก ๋ ์ด์์ ์ฌ๊ตฌ์ฑ
์ฌ์ฉ์ ์๊ฒฌ
- ๐ง๐ปย ์ฌ์ฉ์3 : ์์นจ ์ผ๊ธฐ๋ฅผ ์์ฑํจ๊ณผ ๋์์ ์์นจ์ ํด์ผํ ์ผ์ ์ฒดํฌํ ์ ์๋ ํฌ ๋ ๋ฆฌ์คํธ๊ฐ ์์ผ๋ฉด ์ข๊ฒ ์ต๋๋ค. ๋ํ ์์ธ ํ์ด์ง๋ก ๋ค์ด๊ฐ ๊ฒฝ์ฐ ์์ผ ์ ๋ณด๊ฐ ๋์ค์ง ์์์ ๋ถํธํฉ๋๋ค.
๊ฒฝํ ๊ฐ์
- To do List ๊ธฐ๋ฅ ์ถ๊ฐ
- ์์ธ ํ์ด์ง์ ์์ผ ์ ๋ณด ๋ํ๋๊ฒ ์ ๋ฐ์ดํธ
์ฌ์ฉ์ ์๊ฒฌ
- ๐ง๐ปย ์ฌ์ฉ์4 : ์ฑ ์ด๊ธฐ ํ๋ฉด์ ๋ณด์๋ง์ ์กฐ๊ธ ์ด์ํ ๋๋์ด ๋ค์์ต๋๋ค. ์ด๋ป๊ฒ ๋ฉ๋ชจ๋ฅผ ์ ๋ ฅํด์ผํ๋์?
์์ธ ๋ถ์
๋ค๋น๊ฒ์ด์ ์ UI๋ฅผ ํตํด์ ์๋ก์ด ๊ธฐ๋ก์ ๋ฐ๋ก ๋จ๊ธธ ์ ์๋ ๊ธฐ๋ฅ์ ๋ํ๋ฉด ์ข์ ๊ฒ ๊ฐ๊ณ ๊ทธ๋ฆฌ๊ณ ํ ๋น ๋๋๋ณด๋ค๋ ๋ฉ๋ชจ๊ฐ ๊ฐ๋ฅํ ๊ณต๊ฐ์ด๋ผ๋ UI๋ฅผ ๋ํด์ฃผ๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค๊ณ ์๊ฐํ์. ํ๋จ์ ๋ค๋น๊ฒ์ด์ ๊ธฐ๋ฅ์ ์ถ๊ฐํ ๋ ์์ฑํ ์ ์๋ ๋ฒํผ์ ์ถ๊ฐํ์ผ๋ฉฐ ํ ๋น ๊ณต๊ฐ์ด๋ผ๋ ๋๋์ ์ฃผ๊ธฐ ์ํด์ ๋น ์ฌ๋ฐฑ์ง UI๋ฅผ ๋ํ์.
๊ฒฝํ ๊ฐ์
- (์ผ) ๊ฐ์ ์ (์ค) ๊ฐ์ ํ
- ์ฌ๋ฐฑ UI ์ถ๊ฐ
- Navigation UI ์ถ๊ฐ
๐ฅ ์ฝ๋ ์คํ
npm install
npm start
src
โฃ components
โ โฃ atom
โ โ โฃ etc
โ โ โฃ icon
โ โ โฃ img
โ โ โฃ logo
โ โ โ text
โ โฃ molecule
โ โ โฃ common
โ โ โฃ detail
โ โ โฃ editor
โ โ โฃ home
โ โ โ todo
โ โฃ organisms
โ โ โฃ common
โ โ โฃ detail
โ โ โฃ editor
โ โ โฃ home
โ โ โ todolist
โ โ template
โฃ hooks
โฃ module
โฃ pages
โฃ styles
โฃ util
โฃ App.js
โฃ index.js
โ store.js
"lodash": "^4.17.21",
"react": "^17.0.2",
"react-dom": "^17.0.2",
"react-redux": "^7.2.6",
"react-router-dom": "^6.2.2",
"react-scripts": "5.0.0",
"redux": "^4.1.2",
"redux-devtools-extension": "^2.13.9",
"styled-components": "^5.3.3",
"styled-reset": "^4.3.4",




























