#7.0 ~ 7.1 Setup, Adding ToDos


greetings์์ ์ฌ์ฉํ ์ฝ๋๋ฅผ ๋ฐํ์ผ๋ก ๋ง๋ค ์ ์๋ค. input์ ํ ์คํธ๋ฅผ ์ ๋ ฅํ๋ฉด ํ๋ฉด์ ๋ณด์ด์ง๋ง, ์๋ก๊ณ ์นจ ํ๋ฉด ์ฌ๋ผ์ง๋ ๋ฌธ์ ๊ฐ ์๋ค.
#7.2 Deleting To Dos
์ญ์ ๋ฒํผ์ ๋ง๋๋ ๊ฒ๋ ์์ ๋ด์ฉ๊ณผ ๊ฐ๋ค. createElement๋ฅผ ํตํด ๋ฒํผ์ ๋ง๋ค์ด์ฃผ๊ณ EventListener๋ฅผ ํตํด ํด๋ฆญ์ ๊ฐ์งํ๋ฉด ๋๋ค.

ํ์ง๋ง ์ด๋๋ก ๋ฒํผ์ ํด๋ฆญํ๋ฉด, ์ด๋ค ๋ฆฌ์คํธ์์ ๋ฒํผ์ ํด๋ฆญํ์๋์ง ์ ์๊ฐ ์๋ค. ๋ฐ๋ผ์
deleteToDo ํจ์์ console.log(event); ๋ฅผ ํตํด ํ์ธํด๋ณด๋ฉด target > parentElement ๋๋ parentNode > innerText์์
ํด๋ฆญํ ๋ฆฌ์คํธ์ ๋ด์ฉ์ ์ ์ ์์๋ค.

๋ฐ๋ผ์ ๋ค์๊ณผ ๊ฐ์ ์ฝ๋๋ก ๋ฒํผ์ ํด๋ฆญํ ๋ฆฌ์คํธ๋ง ์ญ์ ํ ์ ์๋ค.

#7.3 Saving To Dos
์๋ก๊ณ ์นจํด๋ ์ ๋ณด๊ฐ ๋จ์์์ผ๋ ค๋ฉด localStorage๋ฅผ ํ์ฉํด์ผํ๋ค. localStorage์ ์ ์ฅํ๊ณ ์๋ก๊ณ ์นจํ๋ฉด localStorage๋ฅผ ๋ถ๋ฌ์์ ํ๋ฉด์ ํ์ํด์ผ ํ๋ค. ํ์ง๋ง localStorage์๋ ๋ฐฐ์ด์ ์ ์ฅํ ์ ์๊ณ ํ ์คํธ๋ง ์ ์ฅ ๊ฐ๋ฅํ๋ค. ๋ฐ๋ผ์, saveToDo ํจ์๋ฅผ ๋ง๋ค์ด ๊ฐ๋ณ๋ก ์ ์ฅํ๋ค.

ํ์ง๋ง ์ด๋๋ก ํ๋ฉด ์๋ก๊ณ ์นจํ๊ณ ์๋ก์ด ๊ฐ์ ์ ๋ ฅํ์ ๋ ์ด์ ์ ๋ด์ฉ์ด ๋ชจ๋ ์ฌ๋ผ์ง๋ค. ๋ฐ๋ผ์ ๋จ์ ํ ์คํธ๊ฐ ์๋ ["a","b","c"]์ ๊ฐ์ ๋ฐฐ์ด ํํ๋ก ์ ์ฅํ๊ธฐ ์ํด JSON.stringify()๋ฅผ ์ด์ฉํ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๋ฐฐ์ด์ ํํ๋ก ์ ์ฅ๋๋ค.


๋ฐฐ์ด๋ก ์ ์ฅํ๋ฉด ์ค๋ณต๋ ๊ฐ๋ฅํ๊ฒ ๋๋ค. ํ์ง๋ง ์๋ก๊ณ ์นจ ๋ฌธ์ ๋ ์์ง๊น์ง๋ ํด๊ฒฐ๋์ง ์๋๋ค.
#7.4 ~ 7.5 Loading To Dos

stringify๋ฅผ ํตํด ๋ง๋ ๋ฐฐ์ด ๋ชจ์์ string์ parse๋ฅผ ์ฌ์ฉํ์ฌ JS๊ฐ ์ดํดํ ์ ์๋ ์ค์ ๋ฐฐ์ด๋ก ๋ง๋ค ์ ์๋ค.

๋ฐ๋ผ์ ์ด์ฒ๋ผ ์ ์ฉํ๋ฉด ์ด์์๋ ๋ฐฐ์ด๋ก ์ฌ์ฉ๊ฐ๋ฅํ๋ค.
JS๋ ๋ฐฐ์ด์ ์๋ ๊ฐ๊ฐ์ item์ ๋ํด function์ ์คํํ ์ ์๊ฒ ํด ์ค๋ค. ์ด๋ ๋ฐฐ์ด์ด ๊ฐ์ง forEach๋ฅผ ํตํด ๊ฐ๋ฅํ๋ค.

parsedToDos.forEach(sayHello);
parsedToDos.forEach((item) => console.log("this is the turn of ", item));
๋ ๋ค ๊ฐ์ ํํ์ด๋ค. ๋๋ฒ์งธ ํํ์ ๋ฐ๋ก ์ด๋ฆ, ํจ์๋ฅผ ๋ง๋ค์ง ์๊ณ ๋ ์งง๊ฒ ์ธ ์ ์๋ค.
์ฆ, JS๋ function์ ํธ์ถํ๋ฉด์ ๋ฐฐ์ด์ ์๋ ๊ฐ๊ฐ์ item์ ์ค๋ค.
์ด๋ฅผ ํ์ฉํ๋ค๋ฉด, ๋งค item๋ง๋ค paintToDo๋ฅผ ์คํํ๋ฉด์ ์๋ก๊ณ ์นจ ์์๋ ๋ด์ฉ์ ์ ์งํ ์ ์๋ค.
-> parsedToDos.forEach(paintToDo);
ํ์ง๋ง ๋ค์ ์๋ก๊ณ ์นจํ๋ฉด ์ด์ ์ ๋ด์ฉ์ ๋ ์ฌ๋ผ์ง๋ค. ๊ทธ ์ด์ ๋ ์ฒ์ ๋ฐฐ์ด ์ ์ธ์ const toDos = [];๋ก ํด๋์๊ธฐ ๋๋ฌธ์ ์คํํ ๋๋ง๋ค ๋ค์ ๋น์ด์๋ ๋ฐฐ์ด๋ก ์์๋๋ ๊ฒ์ด๋ค.
let toDos =[];๋ก ์์ ํ๊ณ parseํ ์ดํ์ toDos = parsedToDos;ํด์ฃผ๋ฉด ํด๊ฒฐ๋๋ค.
#7.6 Deleting To Dos
์์ง ์ญ์ ๋ฒํผ์ ๋๋ฅด๊ณ ์๋ก๊ณ ์นจ์ ํ๋ฉด ์ญ์ ๋์ง ์๋๋ค.
์ค๋ณต๋ item์ ์ญ์ ํ๋ ค๋ฉด ์ ํํ ์ด๋ค item์ธ์ง ๊ตฌ๋ณ์ด ํ์ํ๋ค. ๋ฐ๋ผ์ ๋ฐฐ์ด์ ํํ๊ฐ ์๋ ๋๋คํ ์์ด๋๋ ํจ๊ป ๊ฐ์ง๊ณ ์๋ object๋ก ์ ์ฅํด์ผ ํ๋ค.

paintToDoํจ์์๋ ์ด ์์ฑ์ ๋ฐ์ํด์ค์ผ ์ ์์ ์ผ๋ก ์คํ๋๋ค.

๋ฐฐ์ด์ ์์๋ฅผ ์ง์ฐ๊ธฐ ์ํด filter()๋ฅผ ์ฌ์ฉํ๋ค.


filter์ ํจ์์ ๋ํด false๊ฐ์ ๊ฐ์ง๋ฉด ์ญ์ ๋๋ค. ์์ ๊ฒฝ์ฐ, item !== 3 ์ด false๊ฐ ๋๋ 3์ด ์ญ์ ๋๋ค. ์ด๋ฅผ ์ ์ฉ์ํค๋ฉด ํด๋ฆญํ ๋ฒํผ id์ ๋ํ ์กฐ๊ฑด์ ๊ฐ์ง ํจ์๋ฅผ ๋ง๋ค์ด ์๋ง์ li ๋ฅผ ์ญ์ ํ ์ ์๋ค.

li.id๊ฐ string์ด๋ฏ๋ก parseIntํจ์๋ฅผ ํตํด ์ ์๋ก ๋ณํ์์ผ์ค๋ค. filter๋ฅผ ํตํด ์ญ์ ํ ์ดํ saveToDos() ํด์ผํ๋ค!!