๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์‹œ๋„/Code-States

[D+83] React๋ฅผ ์ด์šฉํ•ด ํˆฌ๋‘์•ฑ(TO-DO) ๋งŒ๋“ค์–ด๋ณด๊ธฐ (1)

by ๐Ÿ‡๋ฐ•๋ด‰๋ด‰๐Ÿ‡ 2021. 1. 9.

 

 

D+83

-  React๋ฅผ ์ด์šฉํ•ด ํˆฌ๋‘์•ฑ(TO-DO) ๋งŒ๋“ค์–ด๋ณด๊ธฐ (1) -

(feat. ์ฒดํฌ๋ฐ•์Šค๋กœ ๋ฆฌ์ŠคํŠธ ๊ตฌํ˜„ํ•˜๊ธฐ)

 


 

 

์ด๋ฒˆ์— ๋ฆฌ์•กํŠธ๋ฅผ ๋ฐฐ์šฐ๋ฉด์„œ ํ›…์Šค์— ๋Œ€ํ•ด ์ข€ ๋” ๊นŠ์ด ์žˆ๋Š” ๊ณต๋ถ€๋ฅผ ํ•˜๊ธฐ ์ „์—

๋ ๋งค๋“ญ์ง“๋Š” ๋Š๋‚Œ์œผ๋กœ ํด๋ž˜์Šค๋ฅผ ํ†ตํ•ด ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  porps๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•ด

ํ•œ ๋ฒˆ ๋” ์ œ๋Œ€๋กœ ํ•ด๋ณด๊ณ  ์‹ถ์—ˆ๊ณ   ๋‹จ์ˆœํžˆ ํ…Œ์ŠคํŠธ๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•œ ๊ณผ์ •์ด ์•„๋‹Œ

์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ๊ฒฐ๊ณผ๋ฌผ์„ ๋งŒ๋“ค์–ด ๋ณด๊ณ  ์‹ถ๋‹จ ๋งˆ์Œ์ด ๋“ค์—ˆ๋Š”๋ฐ

๋งˆ์นจ ๊ฐ™์ด ๊ณต๋ถ€ํ•˜๋Š” ํŽ˜์–ด๋ถ„๊ป˜์„œ ๋ฆฌ์•กํŠธ๋ฅผ ํ†ตํ•ด ํˆฌ๋‘์•ฑ์„ ๋งŒ๋“ค์–ด๋ณด์ž๋Š” ์ œ์•ˆ์„ ํ•ด์ฃผ์…จ๋‹ค.

 

์ดํ‹€์ •๋„ ์‹œ๊ฐ„์„ ๋‘๊ณ  ๊ทธ ํ›„์— ์„œ๋กœ์˜ ๊ฒฐ๊ณผ๋ฌผ์„ ํ™•์ธํ•˜๋Š” ์ˆ™์ œ๋Š๋‚Œ์œผ๋กœ ํ›„๋”ฑ ๋งŒ๋“ค๊ธฐ๋กœ ํ•˜์˜€๋‹ค.

 

 

๊ทธ๋ฆผ์œผ๋กœ ๊ทธ๋ ค๋ณธ ์ปดํฌ๋„ŒํŠธ

๋ณธ๊ฒฉ ์•ฑ์„ ๋งŒ๋“ค๊ธฐ ์ „์— ๊ฐ ์ปดํฌ๋„ŒํŠธ์˜ ์œ„์น˜๋ฅผ ๋Œ€๋žต์ ์œผ๋กœ ํŒŒ์•…ํ•˜๊ธฐ ์œ„ํ•ด ๊ทธ๋ฆผ์„ ๊ทธ๋ ค ํŒŒ์•…ํ•ด ๋ณด์•˜๋‹ค.

 

APP : ๊ฐ€์žฅ ์ƒ๋‹จ์— ์œ„์น˜

AddTodo : ์ผ์ •์„ ์ถ”๊ฐ€

TodayList : ์ถ”๊ฐ€๋œ ์ผ์ •์— ๋Œ€ํ•œ ๋ชฉ๋ก๋“ค

TodayListEntry : TodayList์— ๊ด€๋ จ๋œ ๋ชฉ๋ก ํ•˜๋‚˜ํ•˜๋‚˜

 

 

App.js

๊ฐ€์žฅ ์ƒ๋‹จ์— ์œ„์น˜ํ•œ App์—์„  ์ง€์†์ ์œผ๋กœ ๋ณ€๊ฒฝ๋  list๋ฅผ ๊ณ ๋ คํ•ด clss ํ˜•์‹์œผ๋กœ ์ž‘์„ฑํ–ˆ์œผ๋ฉฐ,

list์˜ ์ดˆ๊ธฐ์ƒํƒœ๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ, ์ž˜ ์ž‘๋™๋˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์ž„์‹œ๋กœ ์ž‘์„ฑํ•œ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋„ฃ์–ด์ฃผ์—ˆ๋‹ค.

 

๋˜ํ•œ AddTodo์—์„œ ์ถ”๊ฐ€ํ•˜๊ธฐ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅผ๋•Œ list์˜ ๋ชฉ๋ก์„ ๋ณ€๊ฒฝํ•˜๊ธฐ ์œ„ํ•ด addList๋ฅผ ๋งŒ๋“ค์–ด ์ฃผ์—ˆ๋‹ค.

 

 

AddTodo.js

๋ฆฌ์ŠคํŠธ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” AddTodo๋Š” input๋ฐ•์Šค์— ๊ฐ’์ด ์ž˜ ์ž…๋ ฅ๋˜๋„๋ก fillTodo๋ฅผ onChange ํ• ๋•Œ๋งˆ๋‹ค ๋Œ์•„๊ฐ€๋„๋ก ํ•˜๊ณ ,

์ด๋•Œ ์˜†์—์ž‡๋Š” ๋ฒ„ํŠผ์„ ๋ˆŒ๋ €์„ ๊ฒฝ์šฐ์— App์— ์žˆ๋Š” addList์— ์ƒํƒœ๋ฅผ ๋ณด๋‚ด ๋ชฉ๋ก์ด ์ถ”๊ฐ€ ๋  ์ˆ˜ ์žˆ๋„๋กœ ํ•œ๋‹ค.

 

 

TodayList.js

๊ทธ๋ ‡๊ฒŒ ์ถ”๊ฐ€๋œ ๋ฆฌ์ŠคํŠธ๋“ค์€ TodayList๋ฅผ ํ†ตํ•ด ํ™”๋ฉด์— ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.

 

์ด๋•Œ list์˜ ๋ชฉ๋ก ํ•˜๋‚˜ํ•˜๋‚˜๋ฅผ map์„ ํ†ตํ•ด์„œ ๊ฐ๊ฐ ๊ตฌํ˜„๋  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.

 

 

TodayListEntry.js

TodayList๋ฅผ ํ†ตํ•ด ๊ฑด๋„ˆ์˜จ ๋ชฉ๋ก ํ•˜๋‚˜๋Š” ํ™”๋ฉด์— ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ๊ฒŒ ๋ Œ๋”๋ฅผ ํ•ด์ฃผ๋ฉด ๋˜๋Š”๋ฐ

์ด๋•Œ ์ธํ’‹ํƒ€์ž…์„ ์ฒดํฌ๋ฐ•์Šค๋กœ ๊ตฌํ˜„ํ•ด ์ผ์ •์ด ์™„๋ฃŒ๋˜๋ฉด ์ฒดํฌ๋  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค€๋‹ค.

 

๋˜ํ•œ ๋‹จ์ˆœํžˆ ์ฒดํฌ๋งŒ ๋˜๋ฉด ์ •ํ™•ํžˆ ์™„๋ฃŒ๋œ ์ผ์ธ์ง€ ์•„๋‹Œ์ง€ ๊ตฌ๋ณ„ํ•˜๊ธฐ ์–ด๋ ต๊ธฐ ๋•Œ๋ฌธ์—

๋ชฉ๋ก์„ ํด๋ฆญํ•  ๊ฒฝ์šฐ์— ์ค‘๊ฐ„์„ ์ด ๋‚˜ํƒ€๋‚  ์ˆ˜ ์žˆ๋„๋ก check๋ฅผ ๋งŒ๋“ค์–ด์ฃผ์—ˆ๋‹ค.

 

check๋Š” for๋ฌธ์„ ๋Œ๋ ค list๋ฅผ ๋‹ค ๋Œ๋ฆฌ๋‹ค๊ฐ€ ๋‚ด๊ฐ€ ํด๋ฆญํ•œ id์™€ ์ผ์น˜ํ•  ๊ฒฝ์šฐ์— ์Šคํƒ€์ผ์„ ์ถ”๊ฐ€ ์‹œ์ผœ ์ค‘๊ฐ„์„ ์ด ์ƒ๊ธฐ๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

 

์ด๋ ‡๊ฒŒ ๊ตฌํ˜„ํ•ด์„œ ๋งŒ๋“ค์–ด์ง„ ๊ฒฐ๊ณผ๋ฌผ์ด๋‹ค.

 

INPUT TO-DO์— ๊ฐ’์„ ์ž…๋ ฅํ•œ ๋’ค์— ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ์œ„์— ๋ฆฌ์ŠคํŠธ๋“ค์ด ์ถ”๊ฐ€๋˜๊ณ 

ํ•ด๋‹น ๋ชฉ๋ก๋“ค์„ ํด๋ฆญํ•˜๋ฉด ์ฒดํฌ๊ฐ€ ๋˜๋ฉด์„œ ์ทจ์†Œ์„ ์ด ๋ฐœ์ƒ๋  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌํ˜„๋˜์—ˆ๋‹ค.

 

๋งŒ๋“ค๊ณ ๋‚˜์„œ ์‚ด์ง ํ—ˆ์ „ํ•จ์„ ๋Š๊ผˆ๋Š”๋ฐ

๋ชฉ๋ก ํ•˜๋‚˜ํ•˜๋‚˜์— X๋ฒ„ํŠผ์„ ๋งŒ๋“ค์–ด ๋‹จ์ˆœํžˆ ์ฒดํฌ๋กœ ์™„๋ฃŒ๋ฅผ ํ‘œ์‹œํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ

๋ฆฌ์ŠคํŠธ์˜ ํŠน์ • ๋ชฉ๋ก์„ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ณ ๋ฏผํ•ด๋ด์•ผ ํ•  ๊ฒƒ ๊ฐ™๋‹ค.

 

์ด๋ ‡๊ฒŒ ๋งŒ๋“ค๊ณ  ๋‚˜๋‹ˆ ์ œ๋ฒ• ๋ฟŒ๋“ฏ...ใ…Ž

 

 

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€