[React][ํ”„๋กœ์ ํŠธ] My Todo List๐Ÿ’•(2) - ๊ฐœ์ธ ๊ณผ์ œ ๊ทธ๋กœ์Šค

์šฐ์—ฅยท2024๋…„ 5์›” 17์ผ

๐Ÿ”จ UX ๊ณ ๋ คํ•œ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ

ย  ๊ธฐ์กด ์ฝ”๋“œ๋Š” Todo List ์ž…๋ ฅํผ์— ๋นˆ ๋ฌธ์ž์—ด์ด ์ž…๋ ฅ๋˜๋ฉด, ์•„๋ฌด๋Ÿฐ ๋™์ž‘์ด ์ผ์–ด๋‚˜์ง€ ์•Š๋„๋ก return;์„ ํ•ด์ฃผ์—ˆ๋Š”๋ฐ, ํ”ผ๋“œ๋ฐฑ ๋•Œ ์‚ฌ์šฉ์ž๊ฐ€ ๋ฌธ์ œ์ ์„ ์•Œ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๊ฒƒ์ด ์ข‹๋‹ค ํ•ด์„œ ๋นˆ ๋ฌธ์ž์—ด ์ž…๋ ฅ์„ ํ•  ๊ฒฝ์šฐ alert ๋ฉ”์„ธ์ง€๊ฐ€ ๋œจ๋„๋ก ์ˆ˜์ •ํ•ด์ฃผ์—ˆ๋‹ค.

 // ๋นˆ ๋ฌธ์ž์—ด ์ž…๋ ฅ ์‹œ alert
 if (!(title.length && content.length)) {
 return alert("Todo List์˜ ์ œ๋ชฉ๊ณผ ๋‚ด์šฉ์„ ์ ์–ด์ฃผ์„ธ์š”โ—");

ย 

โš’๏ธ changeListState ํ•จ์ˆ˜ ์ˆ˜์ •

ย  List Item์˜ ์ƒํƒœ๋ฅผ ๋ณ€ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜์ธ changeListState์—์„œ ๊ธฐ์กด์—๋Š” todoList ๊ฐ์ฒด์˜ ๋‚ด๋ถ€ ๋ฐ์ดํ„ฐ๋ฅผ ์‹ค์ œ๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์งฐ์—ˆ๋‹ค๋Š” ๊ฒƒ์„ ํ”ผ๋“œ๋ฐฑ ๊ณผ์ • ์ค‘์— ์•Œ๊ฒŒ ๋˜์—ˆ๊ณ , ๋”ฐ๋ผ์„œ ๋ถˆ๋ณ€์„ฑ ์œ ์ง€๋ฅผ ์œ„ํ•ด ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜์˜€๋‹ค.

// todo list ์ƒํƒœ ๋ณ€ํ™˜
const changeListState = (id) => {
    const todoListState = todoList.map((item) => (item.id === id ? { ...item, isCompleted: !item.isCompleted } : item));

ย 

๐Ÿ› ๏ธ ๊ทธ ์™ธ ์ˆ˜์ •ํ•œ ๋‚ด์šฉ

  • <label>์˜ htmlFor ์†์„ฑ ํ™œ์šฉ
  • ์ฝ”๋“œ์˜ ํ†ต์ผ์„ฑ์„ ์œ„ํ•ด <input>์—์„œ ์ด๋ฒคํŠธํ•ธ๋“ค๋Ÿฌ ํ•จ์ˆ˜๋ฅผ ๋ฐ”๋กœ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ, ๋ฏธ๋ฆฌ ํ•จ์ˆ˜๋กœ ์„ ์–ธ ํ›„ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ˆ˜์ •
profile
๐ŸŒธ๐Ÿ˜Š๐ŸŒธ

0๊ฐœ์˜ ๋Œ“๊ธ€