Giter Site home page Giter Site logo

w4-todolist's Introduction

Welcome to REACT! 3nd React.app ๐Ÿ˜Ž

โ–ถ๏ธGo to Project

ํŽ˜์ด์ง€ ์†Œ๊ฐœ

๋ฆฌ์•กํŠธ์˜ ๊ธฐ๋ณธ ๊ธฐ๋Šฅ์„ ์—ฐ์Šตํ•˜๊ณ  Redux๋ฅผ ํ™œ์šฉํ•œ ํˆฌ๋‘๋ฆฌ์ŠคํŠธ ์›น์•ฑ (ํ”„๋ก ํŠธ๋ฒ”์œ„๋งŒ ์ง„ํ–‰)

  • Form (Form, input, button ์š”์†Œ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ํˆฌ๋‘ ์ถ”๊ฐ€, ์‚ญ์ œ, ์ธํ’‹๊ฐ’ ๋ฆฌ์…‹, ์ถ”๊ฐ€ ์‹œ ๋ฒจ๋ฆฌ๋ฐ์ดํ„ฐ ๊ตฌํ˜„)
  • List (๊ฐ์ฒด์˜ isDone ๊ฐ’์œผ๋กœ ํ• ์ผ ๋ฆฌ์ŠคํŠธ, ์™„๋ฃŒ ๋ฆฌ์ŠคํŠธ ๊ตฌ์„ฑ)
  • Detail (๋ผ์šฐํ„ฐ ๋ฐ Link, Navigate ํ™œ์šฉํ•˜์—ฌ ๋””ํ…Œ์ผ ํŽ˜์ด์ง€ <-> ํ™ˆ ์—ฐ๊ฒฐ)

๊ธฐ์ˆ  ์Šคํƒ

CSS / REACT(JS, JSX) / vercel

์ปดํฌ๋„ŒํŠธ ๊ตฌ์„ฑ ๋ฐ WF

// home 
<Todolist>
    <Header />
    <Form />
    <List>
        <Todo />
    </List>
    <Footer />
</Todolist>

// Detail
<Detail />

๊ตฌํ˜„ ๊ธฐ๋Šฅ

๊ธฐ๋Šฅ1: Add ๋ฒ„ํŠผ

  • input field ์‚ฌ์šฉ์ž ์ž…๋ ฅ ๋ฐ์ดํ„ฐ๋ฅผ List์— ์ถ”๊ฐ€ํ•˜๋Š” Submit ๋ฒ„ํŠผ
  • [Redux] todos module์—์„œ ์•ก์…˜ํฌ๋ฆฌ์—์ดํ„ฐ / ๋ฆฌ๋“€์„œ๋กœ ํ•จ์ˆ˜ ๊ตฌํ˜„ ํ›„ Form ์ปดํฌ๋„ŒํŠธ์—์„œ๋Š” dispatch๋กœ ๋ณ€ํ™˜์—ฌ๋ถ€ ์ถ”์  Validation ์ถ”๊ฐ€
  • ์ œ๋ชฉ, ๋‚ด์šฉ ํ•„๋“œ ๊ฐ๊ฐ ์ž…๋ ฅ๊ฐ’ ์กด์žฌ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๋Š” useState ์ƒ์„ฑ
  • ๊ฐ๊ฐ์˜ ์ž…๋ ฅ๊ฐ’์ด ์—†๋Š” ๊ฒฝ์šฐ add ๋ถˆ๊ฐ€ ๋ฐ ์ธํ’‹ ํ•„๋“œ ํ•˜๋‹จ์— ์•ˆ๋‚ด๋ฌธ๊ตฌ ๊ณ ์ง€
  • ADD ํ˜น์€ RESET ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ• ๋•Œ๋งˆ๋‹ค ๋ฒจ๋ฆฌ๋ฐ์ดํ„ฐ์˜ ์•ˆ๋‚ด๋ฌธ๊ตฌ๋„ ํ•จ๊ป˜ ๋ฆฌ์…‹๋จ

๊ธฐ๋Šฅ2: Reset ๋ฒ„ํŠผ

  • [Redux]๋ฒ„ํŠผ ํด๋ฆญ ์‹œ setState๋ฅผ "" ๋กœ ๋ณ€ํ™˜
  • onClick ์ด๋ฒคํŠธ๋กœ 'OnReset' ํ•จ์ˆ˜ ์„ ์–ธ, ๋‹ค์ค‘ ํ•„๋“œ ๋ฐ์ดํ„ฐ ๋™์‹œ ๋ณ€ํ™˜

๊ธฐ๋Šฅ3: ์ถ”๊ฐ€๋œ(๋“ฑ๋ก๋œ) ํˆฌ๋‘์•„์ดํ…œ์˜ ์‚ญ์ œ ๊ธฐ๋Šฅ

  • [Redux]onDelete ํ•จ์ˆ˜ ์„ ์–ธ
  • filter๋กœ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ ์•„์ดํ…œ๊ณผ id๊ฐ€ ๊ฐ™์ง€์•Š์€ ์•„์ดํ…œ๋งŒ ๋ฆฌํ„ด (์•„์ด๋””๊ฐ€ ๋™์ผํ•œ ์•„์ดํ…œ๋งŒ ์‚ญ์ œ)

๊ธฐ๋Šฅ4 : ์ถ”๊ฐ€๋œ(๋“ฑ๋ก๋œ) ํˆฌ๋‘์•„์ดํ…œ์˜ ์ƒํƒœ ์ˆ˜์ • ๊ธฐ๋Šฅ

  • [Redux]switchStatus ํ•จ์ˆ˜ ์„ ์–ธ, map ํ•จ์ˆ˜๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ ์•„์ดํ…œ๊ณผ id๊ฐ€ ์ผ์น˜ํ•˜๋Š” ์•„์ดํ…œ์˜ 'isdone' ๊ฐ’์„ ๋ฐ˜๋Œ€๋กœ ์Šค์œ„์น˜
  • ๋ฒ„ํŠผ ๋ณ€๊ฒฝ : {isdone: true} ๋ฉด ํ˜„์žฌ ์™„๋ฃŒ ์ƒํƒœ์ด๋ฏ€๋กœ [์ทจ์†Œ]๋ฒ„ํŠผ ๋…ธ์ถœ, {isdone: false} ๋ฉด ํ˜„์žฌ ์™„๋ฃŒํ•˜์ง€ ์•Š์€ 'ํ• ์ผ' ์ด๋ฏ€๋กœ [์™„๋ฃŒ]๋ฒ„ํŠผ ๋…ธ์ถœ (๋ฒ„ํŠผ ๋ฐ ๋ฒ„ํŠผ ์Šคํƒ€์ผ ๋ณ€๊ฒฝ)
  • ์œ„์น˜ ๋ณ€๊ฒฝ : ํ• ์ผ ๋ฆฌ์ŠคํŠธ - {isdone: false} ์™„๋ฃŒ ๋ฆฌ์ŠคํŠธ - {isdone: true}

๊ธฐ๋Šฅ5 : ๋‹ค์ค‘ ํŽ˜์ด์ง€ ๊ตฌํ˜„

  • Router๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋‹ค์ค‘ ํŽ˜์ด์ง€ ๊ตฌํ˜„

๊ธฐ์กด W3์—์„œ ๊ตฌํ˜„ํ•œ ๊ธฐ๋Šฅ์„ Redux๋ฅผ ๋„์ž…ํ•˜์—ฌ ํ™•์žฅ๋ฆฌํŒฉํ† ๋ง ์ง„ํ–‰ํ•œ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค. ๊ธฐ๋Šฅ ์ž์ฒด๋Š” W3๊ณผ ๊ฑฐ์˜ ๋™์ผํ•˜๋ฉฐ, ์ผ๋ถ€ ๊ธฐ๋Šฅ์ถ”๊ฐ€ ๋ฐ ์ฝ”๋“œ๋งŒ ๊ฐœ์„ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋””์ž์ธ & css

Styled Components

  • ๋“œ๋””์–ด css ํŒŒ์ผ์ด ์•„๋‹Œ styled compponents๋ฅผ ๋„์ž…ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • GlobalStyle.jsx ๋ฅผ ํ™œ์šฉํ•œ ์ „์—ญ ์Šคํƒ€์ผ ์„ค์ • ๋ฐ ๊ฐœ๋ณ„ ์ปดํฌ๋„ŒํŠธ, ํŽ˜์ด์ง€ ๋‚ด์—์„œ ์Šคํƒ€์ผ๋ง์„ ์ง„ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์กฐ๊ฑด๋ถ€ Styled Components props ์‚ฌ์šฉํ•˜๊ธฐ : Todo ์ปดํฌ๋„ŒํŠธ์˜ `border, color ์š”์†Œ๋ฅผ isdone์˜ value์— ๋”ฐ๋ผ ๋‹ค๋ฅด๊ฒŒ ์ ์šฉ๋˜๋„๋ก props๋ฅผ ํ™œ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.
  • Link ์Šคํƒ€์ผ๋ง์„ ์œ„ํ•œ props.children ์‚ฌ์šฉ

react-icons

  • ํ…์ŠคํŠธ์•„์ด์ฝ˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ™œ์šฉ

Flex & Grid

  • ํŽ˜์ด์ง€ ๋ฐ ์ปดํฌ๋„ŒํŠธ์˜ ์˜์—ญ ์„ค์ •์„ ์œ„ํ•œ Grid ํ™œ์šฉ
  • ์ปดํฌ๋„ŒํŠธ ๋‚ด ์š”์†Œ๋“ค์˜ ํ–‰/์—ด ์ •๋ ฌ์„ ์œ„ํ•œ Flex ํ™œ์šฉ

๋ ˆ์ด์•„์›ƒ์„ ์œ„ํ•œ CSS ๊ตฌ์กฐ์  ์Šคํƒ€์ผ๋ง์„ ์—ฐ์Šตํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Mobile responsive web

  • ์ผ๋ฐ˜ CSS์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์Šคํƒ€์ผ๋“œ ์ปดํฌ๋„ŒํŠธ ๋‚ด์—์„œ 'media query'๋ฅผ ํ™œ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.
  • PC์—์„œ๋Š” ๊ณ ์ •๋œ ๋ฐ•์Šค์—์„œ ์Šคํฌ๋กค๋ง์ด ๋˜๋Š” ๋ฐฉ์‹, MO์—์„œ๋Š” ํˆฌ๋‘ ์•„์ดํ…œ์ด ์ถ”๊ฐ€๋ ์ˆ˜๋ก ๋ฐ•์Šค๊ฐ€ ๋Š˜์–ด๋‚˜๋Š ํ˜•์‹์„ ์ฐจ์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค. (overflow:auto; ๋ฐ ์Šคํฌ๋ฆฐ ๋„ˆ๋น„์— ๋”ฐ๋ฅธ height ์กฐ์ •)

๋ฐฐ์šด์  & ์•„์‰ฌ์šด์ 

๋ฐฐ์šด์ ๐Ÿ‘

  • ์ง€๋‚œ ํ”„๋กœ์ ํŠธ์—์„œ ์‹คํŒจํ•œ ํ‘ธํ„ฐ(์ •ํ™•ํžˆ๋Š” ๋ฏธ๋ฌ˜ํ•˜๊ฒŒ div์˜ ํฐ์ƒ‰์—ฌ๋ฐฑ์ด ์ƒ๊ธฐ๋Š” ํ˜„์ƒ)๋ฅผ ์˜ˆ์˜๊ฒŒ ๋„ฃ๋Š”๋ฐ ์„ฑ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค.
  • Redux๋ฅผ ์ƒˆ๋กญ๊ฒŒ ๋ฐฐ์šฐ๋‹ˆ, React์™€๋Š” ์นœ๋ฐ€ํ•ด์ง„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. React ์ •๋„๋ฉด ์–‘๋ฐ˜์ด์ง€๐Ÿ™„
  • Redux์—์„œ store ์ƒ์„ฑ ๋ฐ ๋ชจ๋“ˆ ์ƒ์„ฑํ•˜์—ฌ ์ปดํฌ๋„ŒํŠธ ํŽ˜์ด์ง€๋ฅผ ๊ฐ€๋ณ๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์ตํžŒ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
    ์•„์ง ์–ธ์ œ redux๋ฅผ ์“ฐ๋Š”๊ฒŒ ํšจ์œจ์ ์ธ์ง€ useState๊ฐ€ ๋” ํšจ์œจ์ ์ธ์ง€ ๊ตฌ๋ถ„ํ•˜๋Š”๋ฐ ์ต์ˆ™์น˜ ์•Š์ง€๋งŒ,
    ์ถ”ํ›„ ์ด์–ด์ง€๋Š” ํ”„๋กœ์ ํŠธ์—์„œ ์ ์ฐจ ํšจ์œจ์ ์ธ ์ƒํƒœ๊ด€๋ฆฌ๋ฅผ ๋Šฅ์ˆ™ํ•˜๊ฒŒ ๋˜๋ฆฌ๋ผ ๊ธฐ๋Œ€๋ฉ๋‹ˆ๋‹ค.
  • ์Šคํƒ€์ผ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋„์ž…ํ•œ ์ œ๋ฒ• ๋ฆฌ์•กํŠธ ๋‹ค์šด ์•ฑ์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.
    ๋ฐ˜๋ณต๋˜๋Š” ํ”„๋กœ์ ํŠธ๋งˆ๋‹ค ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์Šคํƒ€์ผ๋ง์„ ์‹œ๋„ํ•ด๋ณด๋ฉด์„œ css ๊ฐ€ ์ต์ˆ™ํ•ด์กŒ๋Š”์ง€,
    ์Šคํƒ€์ผ๋“œ ์ปดํฌ๋„ŒํŠธ๋Š” ์ƒˆ๋กœ์šด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ง€๋งŒ ์ตํ˜€์•ผ ํ•œ๋‹ค๋Š” ๋ถ€๋‹ด๊ฐ๋ณด๋‹ค ์ด์ „๋ณด๋‹ค ๋” ์‰ฝ๊ณ  ํšจ์œจ์ ์ธ ๋ฐฉ์‹์ด๋ผ๋Š” ์ƒ๊ฐ์ด ๋จผ์ € ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๋ฒจ๋ฆฌ๋ฐ์ด์…˜์„ ๋„์ž…ํ–ˆ์Šต๋‹ˆ๋‹ค. ์•Œ๋Ÿฟ์ด ์•„๋‹Œ, ํ•„๋“œ์˜ ์บก์…˜ํ˜•ํƒœ๋กœ UI๋กœ ๊ตฌํ˜„ํ•˜์—ฌ ๋ณด๋‹ค ์‚ฌ์šฉ์ž ์นœํ™”์ ์ธ ๋ฐฉ์‹์„ ๊ณ ๋ฏผํ–ˆ์Šต๋‹ˆ๋‹ค.

์•„์‰ฌ์šด์ ๐Ÿ‘€

  • ํ•ด์•ผํ• ์ผ๊ณผ ์™„๋ฃŒ๋œ ํ• ์ผ์˜ ๋ชจ๋ฐ”์ผ ๋ฒ„์ „์—์„œ 1์—ด๋กœ ๋ฐฐ์น˜ํ•˜๋Š” ๊ฒƒ ๋ฟ ์•„๋‹ˆ๋ผ, ํ† ๊ธ€๋กœ ๊ตฌํ˜„ํ•˜๊ณ  ์‹ถ์€ ์š•์‹ฌ์ด ์žˆ์—ˆ์ง€๋งŒ Detail ํŽ˜์ด์ง€ ๋””๋ฒ„๊น…์ด ์ง€์—ฐ๋˜์–ด ์‹œ๊ฐ„ ๋‚ด ๊ตฌํ˜„ํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ํ† ๊ธ€ ๋ฐฉ์‹์„ ๋„์ž…ํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์ง„๋„์ฒดํฌ

์ด์ „ ๋ชฉํ‘œ : Success!

  1. <div> ๋–ก์น  ๋ง๊ณ , html ๊ตฌ์กฐ์ ์œผ๋กœ ์งœ๋Š” ์—ฐ์Šตํ•˜๊ธฐ
  2. ํ‘ธํ„ฐ ํฌํ•จํ•œ css ๋””์ž์ธ ์ ์šฉ ์—ฐ์Šตํ•˜๊ธฐ
  3. ๋งˆ์ดํฌ๋กœ ์ธํ„ฐ๋ž™์…˜, ๋งˆ์ดํฌ๋กœ ๊ธฐ๋Šฅ๋“ค ํ™•์žฅํ•ด์„œ ์ž‘์—…ํ•˜๊ธฐ

๋‹ค์Œ ๋ชฉํ‘œ : TODO

  1. CRUD, useStae, Redux ํ™œ์šฉ ๋‹ค์ง€๊ธฐ
  2. ํ† ๊ธ€ UI ์—ฐ์Šตํ•˜๊ธฐ

Copyright 2022. hang-hae99 9th joyfive. all rights reserved.

w4-todolist's People

Contributors

joyfive avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.