Giter Club home page Giter Club logo

todolist's Introduction

waving

Hi๐Ÿฅณ

todolist's People

Watchers

 avatar

todolist's Issues

3์ฃผ์ฐจ ์ฝ”๋“œ๋ฆฌ๋ทฐ ๋“œ๋ฆฝ๋‹ˆ๋‹ค :)

๋จผ์ € ๋‹ค์†”๋‹˜์˜ ์ฝ”๋“œ ์ž˜ ์ฝ์—ˆ์Šต๋‹ˆ๋‹ค! ๊ธฐ๋Šฅ ์ปดํฌ๋„ŒํŠธ์˜ ๋„ค์ด๋ฐ๋„ ์ ์ ˆํ•˜๊ณ  ์ƒˆ todo์˜ id๋ฅผ uuidv4๋กœ ์ง€์ •ํ•˜๋Š” ๋“ฑ์˜ ์ฝ”๋“œ ๊ตฌํ˜„์ด ์ œ๊ฐ€ ๊ตฌํ˜„ํ•œ ์ฝ”๋“œ์™€๋Š” ๋‹ค๋ฅด๊ฒŒ ์ƒˆ๋กœ์šด ๊ด€์ ์œผ๋กœ ํ•ด์„ํ•  ์ˆ˜ ์žˆ์–ด์„œ ์ข‹์•˜์Šต๋‹ˆ๋‹ค. ์ถ”๊ฐ€์ ์œผ๋กœ ์ˆ˜์ •ํ•œ๋‹ค๋ฉด ์กฐ๊ธˆ ๋” ์ข‹์€ ์ฝ”๋“œ๊ฐ€ ๋  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์•„์„œ ๋ง์”€๋“œ๋ฆฝ๋‹ˆ๋‹ค ๐Ÿ˜Š

  1. App.css ์•ˆ์˜ style๋“ค์ด๋‚˜ ์ปดํฌ๋„ŒํŠธ ๋‚ด์˜ ํ•˜๋‹จ์— ๊ตฌํ˜„ํ•˜์‹  style๋“ค์€
    ๋ณ„๋„์˜ style ํŒŒ์ผ์— ๋ถ„๋ฆฌํ•˜์‹œ๋ฉด ์ˆ˜์ •์— ๋” ์šฉ์ดํ•˜์‹ค ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
  2. ListWrapper.jsx ํŒŒ์ผ์˜ return ๋ถ€๋ถ„์€ working ๋ถ€๋ถ„๊ณผ done ๋ถ€๋ถ„์˜ ๋‘ StList์€
    ์‚ผํ•ญ์—ฐ์‚ฐ์ž ๋“ฑ์˜ ๋ฐฉ๋ฒ•์„ ์ด์šฉํ•˜๋ฉด ์ฝ”๋“œ๋ฅผ ์กฐ๊ธˆ ๋” ์ค„์ผ ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋„์›€์ด ๋˜์…จ๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค! ๐Ÿ’–

์ฝ”๋“œ ๋ฆฌ๋ทฐ

redux๋กœ ์ „์—ญ์ƒํƒœ ๊ด€๋ฆฌ๋ฅผ ํ•˜์…จ์ง€๋งŒ,
AddForm.jsx ์—์„œ๋Š” useState๋กœ 2์ค‘์œผ๋กœ ์ƒํƒœ๊ด€๋ฆฌ๋ฅผ ํ•˜์‹œ๋Š”๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค!

์ปดํฌ๋„ŒํŠธ ๋ถ„๋ฆฌ๋„ ์ž˜ํ•˜์…จ์ง€๋งŒ, ๊ธฐํšŒ๊ฐ€ ์žˆ๋‹ค๋ฉด ์Šคํƒ€์ผ๋„ ๊ฐ™์ด ๋ถ„๋ฆฌํ•ด์„œ ์ž‘์—…ํ•ด๋ณด์‹œ๋Š”๊ฒƒ๋„ ์ข‹์„๊ฒƒ ๊ฐ™์•„์š”!
๋ถ„๋ฆฌํ•ด์„œ ์ž‘์—…ํ•˜๋ฉด, CSS์™€ ๊ธฐ๋Šฅ ๊ตฌํ˜„์ด ๋ถ„๋ฆฌ๋˜์–ด ๊ฐ€๋…์„ฑ์ด ์ข‹์•„์ง€๋Š”๊ฒƒ ๊ฐ™์•„์„œ ๊ถŒํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค!

Redux์˜ Ducks ๊ตฌ์กฐ๋ฅผ ์ž˜ ์ ์šฉํ•˜์‹œ๊ณ , ๋ถ€๊ฐ€์ ์ธ ์„ค๋ช…์ด ์žˆ์œผ์‹ ๊ฒŒ ์ฝ”๋“œ ์ดํ•ดํ•˜๊ธฐ ์ข‹์€๊ฒƒ ๊ฐ™์•„์š”!

๋ฆฌ๋ทฐ

  1. AddForm.jsx ์—์„œ onSubmitHandler ๊ฐ€ ๋™์ž‘ ํ•  ๋•Œ dispatch ํ•ด์ฃผ๊ณ  ๋‚œ ๋’ค setTodo๋กœ ์ดˆ๊ธฐํ™” ์‹œ์ผœ์ฃผ๋Š” ์ž‘์—…์„ ํ•˜๋Š”๋ฐ์š”. ์—ฌ๊ธฐ์„œ ๋ฆฌ์…‹ ํ•ด์ฃผ๋Š” ๋ถ€๋ถ„์„ ๋˜ ๋”ฐ๋กœ ํ•จ์ˆ˜๋กœ ๋นผ์„œ onSubmitHandler์—์„œ ๋งˆ์ง€๋ง‰์— ๋ถˆ๋Ÿฌ์ฃผ๋ฉด ํ•œ๋ˆˆ์— ๋ณด๊ณ  ์ฝ”๋“œ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์–ด์„œ ๊ฐ€๋…์„ฑ์ด ๋” ์ข‹์„ ๊ฒƒ ๊ฐ™์•„์š”!

  2. ListWrapper.jsx ์—์„œ todolist.filter((todo) => !todo.isDone) ๊ฐ™์€ ๋ถ€๋ถ„์„ return ์œ„์—์„œ ๋”ฐ๋กœ ๋ณ€์ˆ˜๋กœ ๋นผ์ฃผ๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์•„์š”! โ€จex) doneTodoList = todolist.filter((todo) => !todo.isDone);โ€จ์ด๋ ‡๊ฒŒ ๋นผ์ฃผ๋ฉด ๊ฐ€๋…์„ฑ๋„ ์ข‹์•„์ง€๊ณ  ๋ณ€์ˆ˜๋ช…์—์„œ ๋œป์„ ์•Œ ์ˆ˜ ์žˆ์œผ๋‹ˆ ๊ตณ์ด ์ฃผ์„์œผ๋กœ ์ง„ํ–‰์ค‘, ์™„๋ฃŒ๋œ ์ด๋Ÿฌํ•œ ์„ค๋ช…์ด ํ•„์š” ์—†๊ฒ ์ฃ ?

  3. Detail ํŽ˜์ด์ง€์—์„œ๋Š” dispatch ๋กœ์ง์ด ์žˆ๊ณ , Home ํŽ˜์ด์ง€์—์„œ๋Š” ๋กœ์ง์ด ์•„์˜ˆ ์—†๊ฒŒ ์ฝ”๋“œ๋ฅผ ์งœ์…จ๋Š”๋ฐ ํ†ต์ผ์„ฑ์„ ๊ฐ€์ ธ๊ฐ€๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์•„์š”!โ€จDetail ํŽ˜์ด์ง€์—์„œ StTodo๋ถ€ํ„ฐ๋ฅผ DetailContent(์˜ˆ์‹œ)์™€ ๊ฐ™์€ ์ปดํฌ๋„ŒํŠธ๋กœ ๋นผ์ฃผ๊ณ  ๊ทธ ์ปดํฌ๋„ŒํŠธ์—์„œ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋ฉด Detail ํŽ˜์ด์ง€์—์„œ๋Š” ์ปดํฌ๋„ŒํŠธ ๋ถ„๋ฆฌ๊ฐ€ ํ™•์‹คํžˆ ๋ผ์„œ ๊ฐ€๋…์„ฑ๋„ ์ข‹๊ณ  Home ํŽ˜์ด์ง€์™€๋„ ํ†ต์ผ์„ฑ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์–ด์„œ ๋” ์ข‹์„ ๊ฒƒ ๊ฐ™๋„ค์š”!

์ด๋ฒˆ ๊ณผ์ œ๋„ ๊ณ ์ƒํ•˜์…จ์Šต๋‹ˆ๋‹ค~

ํŽ˜์–ด ์ฝ”๋“œ ๋ฆฌ๋ทฐ

  • Form, Header, List๋กœ ๊ฐ๊ฐ์˜ ์ปดํฌ๋„ŒํŠธ ๋ถ„๋ฆฌ๊ฐ€ ์ž˜๋˜์–ด ์žˆ์–ด ์žฌ์ƒ์šฉ์„ฑ์ด ๋†’์€์ ๊ณผ ๊ฐ๊ฐ์˜ ๊ธฐ๋Šฅ์„ ์ฐพ์•„์„œ ๋ณด๊ธฐ์— ํŽธ๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๋Š˜ ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•œ ์ดํ›„์—, export default <์ปดํฌ๋„ŒํŠธ๋ช…>์œผ๋กœ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งคํ•‘ํ•ด์ฃผ๋Š” ๋ฐฉ๋ฒ•๋งŒ ์•Œ๊ณ  ์žˆ์—ˆ๋Š”๋ฐ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
  • id ์ƒ์„ฑ์‹œ Date.now()๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜, length๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•๋งŒ ์ƒ๊ฐํ–ˆ์—ˆ๋Š”๋ฐ uuid๋ฅผ ์‚ฌ์šฉํ•ด ๋‚œ์ˆ˜ ์ƒ์„ฑ์„ ํ•œ ๋ถ€๋ถ„์„ ๋ณด๊ณ  ๊ฐํƒ„ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์‚ญ์ œ, ์ƒํƒœ๋ณ€๊ฒฝ์—๋งŒ ์‹ ๊ฒฝ ์ผ์—ˆ๋Š”๋ฐ console.log๋กœ ๊ฐ๊ฐ์˜ ์ƒํƒœ๋ฅผ ์ถœ๋ ฅํ•ด์ฃผ๋ฉด์„œ ๋กœ๊ทธ์ฒ˜๋ฆฌ๋ฅผ ํ•ด๋†“์€ ๋ถ€๋ถ„์ด ๊ฐœ๋ฐœ์ž๋กœ์„œ ๋ฐฐ์›Œ์•ผ ๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ํด๋ž˜์Šค๋ช…์ด๋‚˜ ํ•จ์ˆ˜๋ช…์ด ๋ช…ํ™•ํ•˜๊ฒŒ ์ง€์ •๋˜์–ด ์žˆ์–ด, ์–ด๋–ค ์˜๋„๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š”์ง€ ์•Œ๊ธฐ์— ํŽธ๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.
  • App.jsx์—์„œ ๊ธฐ๋Šฅ๋ณ„ ์ฃผ์„์ด ์žˆ๋‹ค๋ฉด ๋” ๋ณด๊ธฐ ํŽธ๋ฆฌํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋ฆฌ๋ทฐ

  1. titleInputHandler ๋“ฑ์˜ ํ•จ์ˆ˜์—์„œ ์“ฐ์ด๋Š” event.target.value ์™€ ๊ฐ™์€ ์นœ๊ตฌ๋“ค์€ ๋ณ€์ˆ˜๋กœ ๋”ฐ๋กœ ๋นผ์ฃผ๊ณ  set ํ•จ์ˆ˜์— ๋„ฃ์–ด์ฃผ๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์•„์š”. ๊ฐ ํ•จ์ˆ˜ ์ด๋ฆ„์—์„œ๋„ ์œ ์ถ” ํ•  ์ˆ˜ ์žˆ๊ฒ ์ง€๋งŒ ๋‚˜์ค‘์— ๋” ๋ณต์žกํ•œ ๋กœ์ง์„ ์งœ๊ฒŒ๋˜๋ฉด ์ด๋ ‡๊ฒŒ ์ด๋ฆ„์ด ๊ธด ์นœ๊ตฌ๋“ค์€ ์งง์€ ๋ณ€์ˆ˜๋ช…์œผ๋กœ ๋ช…์‹œํ•ด์ฃผ๋ฉด ๊ฐ€๋…์„ฑ์ด ๋” ์ข‹์•„์ง‘๋‹ˆ๋‹ค. โ€จEx) const title = event.target.value;
  2. ์ปดํฌ๋„ŒํŠธ ๋ถ„๋ฆฌ๋ฅผ ์—„์ฒญ ์ž˜ ํ•ด์ฃผ์…จ๋Š”๋ฐ, Form ์ปดํฌ๋„ŒํŠธ ์•ˆ์— ์žˆ๋Š” label, input ๋“ค์„ ํ•˜๋‚˜์˜ ์„ธํŠธ๋กœ ์ปดํฌ๋„ŒํŠธ ๋ถ„๋ฆฌ๋ฅผ ๋” ํ•ด์ฃผ๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค! ๊ทธ๋งŒํผ ๋ฐ˜๋ณต๋˜๋Š” ์ฝ”๋“œ๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์•„์š”!
  3. ListWrapper ์ปดํฌ๋„ŒํŠธ์—์„œ isDone ์ธ ๊ฒฝ์šฐ ๋นˆ fragment ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ  ์žˆ๋Š”๋ฐ ์™œ ์ €๋ ‡๊ฒŒ ์‚ฌ์šฉํ•˜์…จ์„๊นŒ์š”? ์ด์œ ๊ฐ€ ์žˆ๋‚˜์š”? ๋งŒ์•ฝ ์•„๋ฌด๊ฒƒ๋„ ๋ณด์—ฌ์ง€์ง€ ์•Š๊ฒŒ ํ•˜๋Š”๊ฒŒ ๋ชฉ์ ์ด๋ผ๋ฉด null์„ return ํ•ด๋„ ๋ฉ๋‹ˆ๋‹ค!
  4. ์ฝ”๋“œ๋ฅผ ์ญ‰ ์ฝ์–ด๋ณด๋‹ˆ๊นŒ 3ํ•ญ ์—ฐ์‚ฐ์ž๋กœ done์ด true์ธ ๊ฒฝ์šฐ false์ธ ๊ฒฝ์šฐ๋ฅผ ๋”ฐ๋กœ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ด๋ ‡๊ฒŒ ํ•˜์‹  ๊ฒƒ ๊ฐ™์€๋ฐ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•๋„ ์•Œ๋ ค๋“œ๋ฆด๊ฒŒ์š”!
    ํ˜„์žฌ ์ฝ”๋“œ : item.IsDone ? ( ์ฝ”๋“œ๋“ค ) : <></>
    ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์˜ ์ฝ”๋“œ : item.isDone && ( ์ฝ”๋“œ๋“ค )

์ฒซ ๋ฆฌ์•กํŠธ ๊ณผ์ œ ํ•˜์‹œ๋Š๋ผ ๊ณ ์ƒ ๋งŽ์œผ์…จ์Šต๋‹ˆ๋‹ค!

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.