1์ผ์ฐจOT๋ฅผ ๋ค์๋ค. 1์ฃผ์ฐจ์๋ ๋ฏธ๋ ํ๋ก์ ํธ์ธ "ํ ์๊ฐํ๊ธฐ"๊ฐ ์๋๋ฐ, ์ฌ์ ์บ ํ ํฉ๋ฅ๊ฐ ๋ฆ์ ์ฐ๋ฆฌํ์ ํ๋ก์ ํธ๋ฅผ ์งํํ์ง ์์๋ ๋๋ ํ์ด์์ง๋ง ํ์๋ค๊ณผ ํ์ํ์ฌ ํ ํ๋ก์ ํธ๋ฅผ ์งํํ๊ธฐ๋ก ํ๋ค.ํ์๋ฅผ ์งํํ๋ฉด์ ๋๋ ์ ์ํ๊ต์์ ํํ๋ก์ ํธ๋ฅผ ๋ช ๋ฒ ํด๋ดค์ง๋ง ๊ต์๋์ด
์ค๋์ 2์์ TIL ํน๊ฐ์ ๋ฃ๊ณ 3์์ ํ์๋ฅผ ์งํํ๋ค.์์นจ ์๊ฐ์๋ ์ด์ ํ์ ๋ ๋ถ์กฑํ๋ค๊ณ ๋๋ ํ๋ก์ ํธ ๊ธฐํ ์์์ ๋ํด ๊ณต๋ถํ์ฌ velog์ ์ฌ๋ ธ๋ค.ํ์ ๋ ํ์๋์ด ๊ธฐ๋ฅ์ ๋ฐ๋ผ ํํธ๋ฅผ ์ ์ ํ ๋ถ๋ฐฐํด ์ค์ ์ ํ์๋ค์ ํํธ๊ฐ ์ ํด์ก๋ค.๋๋ ํํ๋ฉด, ํค๋, ํธํฐ๋ฅผ
์ค๋์ ํ ์๊ฐ ํ๋ก์ ํธ ํํธ ๋ถ๋ฐฐ ํ, ๋ณธ๊ฒฉ์ ์ธ ๊ธฐ๋ฅ ๊ตฌํ์ด ์์๋๋ ๋ ์ด์๋ค.๋ด ํํธ๋ ์ฃผ๋ก html ํํธ๋ผ์ ์ด๋ ๋ค ํ ๊ธฐ๋ฅ ๊ตฌํ์ ์๊ธฐ ๋๋ฌธ์ ์ ์ฌ ๋จน๊ธฐ ์ ์ PR๋ฅผ ์์ฑํ๋ค. ํ์ง๋ง, git์ ๋ค๋ฃจ๋๊ฒ ์ต์ํ์ง ์์์ ์กฐ๊ธ ํค๋งธ๋ค. ํ์ง๋ง ๊ฐ์ ํ์์ด์ ํ์๋
์ค๋๋ ํ๋ก์ ํธ ๊ตฌํ์ ํ์ผ๋ค. ๋ด๊ฐ ๋งก์ ๋ถ๋ถ์ ๋๋์ ํด๊ฒฐ์ด ์ด๋ ค์ด ํ์ ๋ถ๋ค์ด ๋งก์ ๋ถ๋ถ์ ๋์์ฃผ์๋ค.๋ณ๊ฑฐ ์๋์์คฌ๋๋ฐ ํผ์์ ์ฒ์ฒ ํด๋ด์ ์ ์ฌ์ค ๋์์คฌ๋ค๊ณ ํ๊ธฐ๋ ๋ฏผ๋งํ๋ค.๊ทธ๋ฐ๋ฐ CRUD์์ C๋ถ๋ถ์ด ๋ฌธ์ ๊ฐ ์๊ฒจ ๋ด๊ฐ ๋งก๊ฒ ๋์๋ค. ๊ทธ๋์ ์ง๊ธ ๋ก๊ทธ์ธ/ํ์๊ฐ์
์ค๋๋ก ์ผ์ฃผ์ผ๊ฐ ๋ด๋ฐฐ์บ ์์ ๊ณต๋ถํ๋ค. ๋ฏธ๋ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉด์ ๊นํ๊ณผ ํ์ ์ ๋ํด ๋ง์๊ฑธ ์๊ฒ ๋์ด์ ์ข์๊ณ 12์๊ฐ์ฉ ๊ณต๋ถํ๋ ์ต๊ด์ ๋ค์ด๊ฒ ๋ ๊ฒ ๊ฐ์์ ์ข์๋ค.์ค๋ ๋ฐํํ ํ ํํฐ๋๊ป ํผ๋๋ฐฑ์ ๋ฐ๊ฒ ๋์๋๋ฐ ํด๋ ๊ตฌ์กฐ๋ฅผ ์ ์ง์ผํ๋ค. index.html๋ roo
์๋ฒ ์ฃผ์ฐจ๋ ๊ฐ์ธ ๊ณต๋ถ๋ฅผ ์งํํ๋ฉด์ ๊ฐ์ธ ํ๋ก์ ํธ๋ฅผ ํ๋ ์ฃผ์ฐจ์ด๋ค.javascript ๊ธฐ์ด, ์ฌํ ๋ฌธ๋ฒ์ ๋ํด ๊ณต๋ถํ์๋ค.๊ฐ์ฒด์งํฅ์ด๋ค.๋์ ํ์ดํ์ธ์ด๋ค.ํจ์ํ ํ๋ก๊ทธ๋๋ฐ ์ง์.๋น๋๊ธฐ ์ฒ๋ฆฌ ๊ฐ๋ฅํด๋ผ ์ธก ๋ฐ ์๋ฒ ์ธก ๋ชจ๋์์ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.์ ์ฐจ์งํฅ์ด๋? ์ฝ๋ ๋งจ์์ค๋ถํฐ
: ์คํํ ์ฝ๋์ ์ ๊ณตํ ํ๊ฒฝ ์ ๋ณด๋ค์ ๋ชจ์๋์ ๊ฐ์ฒด์ด๋ค.Stack : Last in, first outQueue : First in, first out๋ด๊ฐ ์ง๋์ ์ฝ๋๋ค์ Stack์ ์์ด๊ฒ ๋๋ค. ์คํ์ด ๋ง์น๋ฉด ์คํ์ด ์์ด์ง๋ค.์ด๋ฐ stack๋ฐฉ์์ผ๋ก ์ฝ๋์ ์์๋ฅผ
: ์๋ณ์์ ๋ํ ์ ํจ๋ฒ์๋ฅผ ์๋ฏธํ๋ค. ๋๋ถ๋ถ์ ์ธ์ด์ ์กด์ฌํ๋ค.: ์๋ณ์์ ์ ํจ๋ฒ์๋ฅผ ์์์๋ถํฐ ๋ฐ๊นฅ์ผ๋ก ์ฐจ๋ก๋ก ๊ฒ์ํด๋๊ฐ๋ ๊ฒ์ด๋ค.: ์ค์ฝํ ์ฒด์ธ์ด ๊ฐ๋ฅํ ๋ก ํ๋ ๊ฒ.(์ธ๋ถ ํ๊ฒฝ์ ์ฐธ์กฐ์ ๋ณด)callstack์ ์์ผ๋ ์คํํ๊ณ ์๋ ์คํ ์ปจํ ์คํธ์ ์์ ์ปจํ ์คํธ์ r
: ๋ค๋ฅธ ์ฝ๋์ ์ธ์๋ก ๋๊ฒจ์ฃผ๋ ํจ์.setTimeoutforEachaction์ ๋ํ ์ ์ด๊ถ์ ํจ์์๊ฒ ์์ํ๋ ๊ฐ๋ ์ด๋ค. ๋ด๊ฐ ์ง์ ํจ์๋ฅผ ํธ์ถํ๋๊ฒ ์๋, ์ฝ๋ฐฑ ํจ์ ์์ฒด์ ์ผ๋ก ๋ด๋ถ ๋ก์ง์ ๋ง์ถฐ ์ ์ด๊ถ์ ๊ฐ์ง๊ณ ๊ธฐ๋ฅ์ ์คํํ๊ฒ ํ๋ ๊ฒ.ํธ์ถ ์์ ์ ๋ํ ์ ์ด๊ถ์
์ค๋์ ์๊ณ ๋ฆฌ์ฆ ํน๊ฐ์ ๋ค์๋ค.์๋ฃ๊ตฌ์กฐ ๋ฐฐ์ด๊ณผ ๋งํฌ๋ ๋ฆฌ์คํธ์ ์๊ฐ๋ณต์ก๋๊ฐ ์ด๋ป๊ฒ ๋๊ณ ์๊ฐ๋ณต์ก๋๋ฅผ ์ต์ ํํ๋๊ฒ ์ ์ข์์ง, ๋ฐฐ์ด์ ์ฅ์ ์ ์กฐํ๊ฐ ๋น ๋ฅด์ง๋ง ๊ฒ์ ์์ ์ด ๋ณต์กํ๊ณ ๋งํฌ๋ ๋ฆฌ์คํธ๋ ๊ฒ์ ์์ ์ ๋น ๋ฅด์ง๋ง ์กฐํ๊ฐ ์ด๋ ต๋ค๋ ๊ฒ์ ํ์ธํ๋ค.์๊ณ ๋ฆฌ์ฆ ํน๊ฐ ์ดํ ์ฝ๋
์๊ณ ๋ฆฌ์ฆ ํน๊ฐ์์ ์๋ฃ๊ตฌ์กฐ ์ ๋ ฌ์ ๋ํด ๊ณต๋ถํ์๋ค.์ ๋ฆฌํ ๋ด์ฉ์ ์๊ณ ๋ฆฌ์ฆ ํน๊ฐ์ ๋ฐ๋ก ์ฌ๋ฆด ์์ ์ด๋ค.๋ํ ๊ฐ์ธํ๋ก์ ํธ์ธ ์ํ ๊ฒ์ ์ฌ์ดํธ๋ฅผ ์์ฑํ์๋ค.ํ์์๊ตฌ์ฌํญ์๋api ๋ถ๋ฌ์ค๊ธฐ, ์ํ ๊ฒ์ ๊ธฐ๋ฅ, ๋ฐ๋๋ผ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฑ๋ฑ์์๋๋ฐ ๊ฒ์ ์ฌ์ดํธ์ธ ๋งํผ ๊ฒ์ํ ๋ ํธ๋ฆฌํ
์ค๋์ ๊ฐ์ธ ํ๋ก์ ํธ ์ ์ถ ํ ๊ฒ์ ์ฝ๋ ๊ทธ๋ก์ค? (๋ค์ ๊ณ ์น๊ธฐ) ํ๋ ๋ ์ด์๋ค.์ผ๋จ ๋ณธ์ธ๋ ์ฝ๋๋ฅผ ์์ฑํ๋ฉด์ ๊ฐ๋ ์ฑ์ด ๋ง์ด ๋จ์ด์ง๋๋ฐ ์ด๊ฑธ ์ด๋ป๊ฒ ๋ชจ๋ํ ํ ์ง ๋ง๋งํ๊ณ ์๊ฐํ๋ค ๊ณจ์น ์ํ์ ๊ทธ๋ฅ ํ jsํ์ผ์ ์ฝ๋๋ฅผ ๋ค ๋๋ ค๋ฃ์์๋ค. ํ์ง๋ง! ์ฝ์นญ ์์์ ๋ณด๋ฉด์ ๋ชฐ๋
์นด๋ ํด๋ฆญ ์ ํ์ด์ง ์ด๋detail ์์ ์ ์ฒด์ ์ธ UI ๊ตฌํ (html, css)์นด๋ ์ ๋ณด ๋ถ๋ฌ์ค๊ณ ์ธ๋ถ ui ์ ํ๊ธฐ(์ํ ์ ๋ชฉ, ๊ฐ๋ , ๋ฐฐ์ฐ, ๊ฐ๋ด๋ ๋, ๊ฐ๋ด์ผ, ํ์ ๋ฑ๋ฑ )๋ก๊ณ (์ด์น๋ฌ), ๋ณ์ ์์ด์ฝ ๋์์ธ๋ณ์ ๋ง์ฐ์ค ํธ๋ฒ ์ ์ด ์ผ๋ง๋ ์ฑ์์ง๋์ง ๋ณด์ด๊ฒํธ๋ฒ ํ
๊ทธ์ ์ javascript์ ํ์ ์ด์ ๋ฅผ ์์์ผ ํ๋ค.๋ธ๋ผ์ฐ์ ์์ ์ฐ๋ ค๊ณ ๋ง๋ค์ด์ง ๊ฒ.์น ํ์ด์ง๋ฅผ ๋์ ์ผ๋ก ๋ง๋ค๊ธฐ ์ํด! html๋ฌธ์๋ฅผ ์กฐ์ํ๋ฉด ์์ง(๊ธฐ๋ฅ)์ด๊ฒ ํ๊ณ ์ถ์ด์ ๋ง๋ค์ด์ง ๊ฒ์ด๋ค.์ฌ์ฉ์๊ฐ ๋ธ๋ผ์ฐ์ ์ ์ฃผ์๋ฅผ ์ ๋ ฅํ๋ค. (์ฆ, ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์์ฒญ(reque
๋ฒ์จ ๋ด๋ฐฐ์บ ์ ์์ํ์ง 3์ฃผ์ฐจ ๋ง์ง๋ง๋ ์ด๋ค.ํ ํ๋ก์ ํธ๋ฅผ ์์ํ์ง๋ 2์ผ์ฐจ.ํ์ ๋ชจ๋ ํ์ ๋ด์ ์์ ์ ํ๊ณ ์๋ค! ์ค๋ ๋๋ ๋ฆฌ๋ทฐ ์์ฑ creat ๋ถ๋ถ์ ์งํํด์ ํ๋ฃจ๋ง์ ๊ธฐ๋ฅ ๊ตฌํ์ ๋ง์ณค๋ค. ๋์์ธ์ ๋ถ๋ถ์... ์ถํ์ ์์ ๊ฐ๋ฅํ๋, read, update, del
์ค๋ create ๋ถ๋ถ์ ๊ฑฐ์ 99% ์์ฑ ์์ผฐ๋ค.input์ ๋ฃ์ value๋ค์ ๋ฐ์์์ ๊ฐ์ฒด๋ฅผ ๋ฐฐ์ด์ ์ ์ฅํ๊ฒ ๋์๋๋ฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.์ฐ์ localStorage์๋ ๋ชจ๋ ๋ฆฌ๋ทฐ๋ฐ์ดํฐ๋ฅผ reviews์ ๋ฃ๊ธฐ๋ก ํด์ ์๋์ ๊ฐ์ด ์ฝ๋๋ฅผ ์งฐ๋ค.ํ์ง๋ง ์ด๋ ๊ฒ ์์ฑํ lo
์ค๋์ ํ๋ก์ ํธ๋ฅผ ์ ์ฒด์ ์ผ๋ก ๋ง๊ฐ์ ํ๋ ค๊ณ ๋ ธ๋ ฅํ๋ค.๋๋ ์ด๋ฏธ ๊ธฐ๋ฅ ๊ตฌํ์ด ๋๋ฌ๊ธฐ ๋๋ฌธ์ ๊ฐ์ธ ๊ณต๋ถ(์๊ณ ๋ฆฌ์ฆ, ์๋ฐ์คํฌ๋ฆฝํธ ๋ฌธ๋ฒ)๋ฅผ ํ๋ฉฐ ์ ํด์ง ๋ง๊ฐ๊ธฐํ๊น์ง ๊ธฐ๋ค๋ ธ๋ค.๋คํํ ์ด๋ ค์์ ๋๋ ์์ , ์ญ์ ๊ธฐ๋ฅ์ด ๊ฑฐ์ ์์ฑ์ ์๋๊ณ ์ค๋ฅ๊ฐ ์๊ฒจ์ ๊ทธ ์ชฝ์ ์ดํด๋ณด๋..ํฌ์ํ
์ค๋์ ํ๋ก์ ํธ ๋ง๊ฐ๊ณผ ๋ฐํ๊ฐ ์์๋ค.์ฐ๋ฆฌ ํ์ ๊ฐ์ ํ ๋ง๊ฐ์๊ฐ ์ง์ ์ ํ๋ก์ ํธ๋ฅผ ๋ง๊ฐํ ์ ์์๋ค.๋ค๋ค ๋๋ฌด ์ด์ฌํ ํด์ฃผ์ ์ ์ฑ๊ณต์ ์ผ๋ก ํ๋ก์ ํธ๋ฅผ ์์ฑํ ์ ์์๋ ๊ฒ ๊ฐ๋ค.์์ฌ์ด ์ ์ด ํ ๋๊ฐ์ง๊ฐ ์๋๋ฐ ๊ณ ์น๊ณ ReadME๋ฅผ ์ฐ๋ ๊ฑด ๋ด์ผ์ด๋ ์ฃผ๋ง์ ์งํํด์ผ๊ฒ ๋ค.ํ
๋ณ์์ ์์, ๋ณ์์ ์ข ๋ฅ, ๋ณ์์ ๋ฒ์let ๊ณผ const ๋ ๋ธ๋ก ๋จ์ scope์ด๋ค.var๋ ํจ์ scope๋ฅผ ๊ฐ์ง๊ธฐ ๋๋ฌธ์ ๋ธ๋ก ์์ ์ ์ธ์ ํด๋ ๋ฐ๊นฅ ์์ญ์์๋ ์ฌ์ฉ์ด ๋๊ธฐ ๋๋ฌธ์ด๋ค. ํธ์ด์คํ ๋ฌธ์ : ๋ณ์๋ค์ ์๋ก ์ฌ๋ฆฌ๋ ๊ณผ์ ์์ ๋ฌธ์ ๊ฐ ์๊ธธ ์ ์๋ค.va
์ฃผ๋ง์ ํน ์ฌ์๋๋ฐ ์ด์ ๋ฐค๋ถํฐ ๋ชธ์ด๊ธฐ์ด์ด ์๊ฒจ์ ์ค๋์ ์ปจ๋์ ์ด ์์ฒญ ์ ์กฐํ๋ค..์ ํน์ฌ๊ณ ๋์ ๋ชธ์ด์ด ๊ฑธ๋ฆฐ๊ฑด์ง ๋ชจ๋ฅด๊ฒ ์ง๋ง.. ๊ทธ๋๋! ์ฃผ๋ง๋์ ํ๋ ค๊ณ ํ๋ ์ผ์ ๋ชปํ๊ธฐ ๋๋ฌธ์ ์ค๋ ์ด์ฌํ ๊ณต๋ถํ๋ค.์ค๋ ํน๊ฐ ๋ค์ผ๋ฉด์ ๋ฉ๋ชจํ๊ฑธ ์ ์ด๋ฌ์ผ๊ฒ ๋ค. ์ผ๋จ ๊ณผ์ ๋ก markdown
React๋ UI Library๋ค.์น๊ณผ ๋ค์ดํฐ๋ธ์์ ์ฌ์ฉํ ์ ์๋ Library๋ค.ํ๋ ์์ํฌ? ๊ฐ๋ฐ์๊ฐ ๊ธฐ๋ฅ ๊ตฌํ์๋ง ์ง์คํ ์ ์๋๋ก ํ์ํ ๋ชจ๋ ํ๋ก๊ทธ๋๋ฐ์ ์์์ ์ง์ํ๋ ๊ธฐ์ ์ ์กฐํฉSpring Framework: java ๊ธฐ๋ฐ์ ์น(๋ฐฑ์๋) ํ๋ ์์ํฌVue.
๋ณ์์ ์ด๋ฆ์ ๋ช ์ฌ!ํจ์์ ์ด๋ฆ์ ๋์ฌ! (ex. handleClickBtn)๋ชจ๋ ์ด๋ฆ์ ์ด๋ฆ์ผ๋ก ์ ์ถ ๊ฐ๋ฅํ๊ฒ ํด์ผํ๋ค!๋จ์ํ๊ณผ ๋ณต์ํ ์ฌ์ฉ์ ์ ์ํ์. ๋ฐฐ์ด(๋ฆฌ์คํธ) > ๋ณต์ํ ์์ฑJavaScript๋ณ์๋ช , ํจ์๋ช ์ camelCase์์๋ช ์ SCREAMING_SN
์ค๋์ ์์นจ์ ์๊ณ ๋ฆฌ์ฆ ์ฝ๋์นดํ๋ฅผ ํ ๋ค ์ฑ๋ฆฐ์ง๋ฐ ๊ณผ์ ์ธ ํผ์นด์ธ ๋์ดํฐ๋ฅผ ํ๋ฃจ์ข ์ผ ๊ตฌํํ๋ค!์ด๋ ค์ ๋ ๋ถ๋ถ์ ์์ง useRef()๋ฅผ ์ฐ๋ ๋ฒ์ ๊ฐ์๋ฅผ ๋ฃ์ง ์์๋๋ฐ ์ฌ์ฉํ๋๋ด ์ ์ผ๋ ๊ฒ๊ณผํค๋ณด๋๋ฅผ ๋๋ฅผ๋๋ง๋ค ์ ๋๋ฉ์ด์ ์ด ์๋ํ์ผ๋ฉด ํ๋๋ฐ, ์๋ํ์ง ์์์ setTimeou
์ค๋์ ์๊ณ ๋ฆฌ์ฆ ํน๊ฐ, ๊ฐ์ธ๊ณผ์ ๋ฐ์ , ๋ฆฌ์กํธ ์ฌํ ํน๊ฐ ์ด ์๋ ๋ ์ด๋ผ ๋ชฐ์์น๋ ๋ ์ด์๋ค.์๊ณ ๋ฆฌ์ฆ์ OT๊ฒธ ๊ณผ์ ๋ฅผ ๋ด์ฃผ์๋๋ฐ class๋ฅผ ์ด์ฉํด์ ๋ฉ์๋์ธ length๋ map๊ณผ ๊ฐ์ ํจ์๋ฅผ ๊ตฌํํ๋ ๊ณผ์ ์ด๋ค. ๊ฐ์ธ ๊ณผ์ ๋ก๋ ๊ฐ๊ณ๋ถ?๋ฅผ ๋ง๋๋ ํ๋ก์ ํธ์ธ๋ฐ props,
์ค๋์ ์๊ณ ๋ฆฌ์ฆ ์์ ๋ฅผ ํ๊ณ ๊ฐ์๋ฅผ ๋ณด๊ณ ๋ฐฐ์ด๋ด์ฉ์ ์ ๋ฆฌํ๋ค.hook์ ๋ํด์ ๊ณต๋ถํ๊ณ redux๋ฅผ ๊ณต๋ถํ๋ ์ค์ด๋ค. ์กฐ๊ธ ๋ณต์กํ๊ณ ์ด๋ ต์ง๋ง ๊ทธ๋๋ ๋ชจ๋ฅด๋๊ฑธ ์์๊ฐ๋๊ฒ ์ฌ๋ฐ๊ธฐ๋ํ๋ค. ์ค๋ ๋ฐฐ์ด ๊ฒ์ ์ ๋ฆฌํ ๋ด์ฉ์ ๋ค๋ฅธ ํฌ์คํ ์ผ๋ก ์ฌ๋ ท๋ค! ๋ด์ผ์ ํ๋ก์ ํธ๋ฅผ ์์ํด์ผ๊ฒ ๋ค
redux๋ ์ ์ญ์ํ๊ด๋ฆฌ๋ฅผ ํ๋ค.store์ state์ ์ ์ฅํ๊ณ ๊ฐ์ด ํ์ํ ์ปดํฌ๋ํธ๊ฐ dispatch๋ฅผ ํตํด action์ ๋ณด๋ด๋ฉด action์์ ์๋ ๊ฐtype, payload(์ ํ๊ฐ)์ ๋ณด๊ณ store์์ ์๋ง์ ํ๋์ ์คํ ํ ๊ฐ์ด ๋ณ๊ฒฝ๋๊ฒ ๋๋ค!๊ทธ๋ฌ๋ฉด use
์ค๋์ TIL 1. redux ๋ณต์ต ๊ฒธ ๊ณต๋ถ ์ ๋ฆฌ 2. ๊ธฐ๋ฅ ๊ตฌํ ๋ฐ์ดํฐ ์ ๋ ฅ ๋ฐ์ดํฐ ํ๋ฉด์ ๋ถ๋ฌ์ค๊ธฐ router๋ก ํ๋ฉด์ด๋ styled component๋ก ์กฐ๊ฑด๋ถ ์คํ์ผ๋งํ๊ธฐ
์คํ์ผ ์ข ๊พธ๋ฏธ๊ณ input ์ ํจ์ฑ ๊ฒ์ฌ๋ฑ๋ก๋ ๋ ๋ฑ๋กํ ๋ ์ง์ ๊ฐ์ ๋ง๊ฒ ์์ ๋ฐ๊ฟ์ฃผ๊ณ ๋ฑ๋กํ ๋๋ง๋ค ๋ฆฌ๋ ๋๋ง..์ด๊ฒ๋ง ํ๋๋ฐ ํ๋ฃจ๊ฐ ๋ค์ง๋ฌ๋ค..์ด์งธ์?
์ฑ๋ฆฐ์ง ๋ฐ ๊ณผ์ ๋ก ๋ด์ค memo app ๋ง๋ค๊ธฐ๊ฐ ์์ง ๋ค๋ค๋ณด์ง ๋ชปํ redux๋ก ๋์ด์์ด์ ๊ฐ์ธ๊ณผ์ ๋ฅผ ใ ์ฐ์ ์ ํ๋๋ด ์ค๋์์์ผ ๋ถ๋ด๋ถ๋ด ํ๋๋ ๊ฒฐ๊ตญ ๊ธฐํ๋ด์ ๋ง๋ค์ง ๋ชปํ๊ณ ๊ฐ์ธ๊ณผ์ ๋ ์ง์ ์ด ๋๋๋ค ใ ใ ํ์ง๋ง ๋ฆฌ๋์ค์ ์ฌ์ฉ๋ฐฉ๋ฒ์ ๋ํด ์ตํ์ผ๋ ๊ฐ์ธ๊ณผ์ ์์ redux
์ค๋์ ์์ธํ์ด์ง ์์ , ์ญ์ , ๋ชจ๋์ฐฝ๊น์ง props-drilling์ผ๋ก ๋ค ๋๋ด๊ณ contextAPI๋ก ๊น์ง refactoring ์๋ฃํ๋ค!์ธ๋ถ์ ์ผ๋ก๋ ์ ํจ์ฑ ๊ฒ์ฌ๋ ํ๊ณ vite.config.js์ scr ๊ฒฝ๋ก๋ฅผ ์ ๋๊ฒฝ๋ก๋ก ์ค์ ํด์ @/components/... ์
์ด๊ฒ์ ๋ฐ๋ก ํ๋ก์ ํธ ์๋ฆฌ์ฆ์ read me๊น์ง ๋น ๋ฐฉํ๊ฒ ์ ์ด์ ์ฌ๋ ค๋๊ฒ ๋ค.. ์ผ๋จ ๊ธฐ๋ฅ ๊ตฌํ์ ์์ฑ์ํจ๊ฒ์ ์์ถ..์ค๋ zustand์ ๋ํด ๋ฐฐ์ ๋ค. ํ ๋์ ๋ด๋ redux๋ณด๋ค ์ฌ์ฉํ๊ธฐ ๊ฐ๋จํ ๋๋์ด ๋ค์๋ค. zustand์์ useStore ์ฌ๋ฌ ๊ฐ์ ๊บผ๋ผ ๋๋,
์ค๋ memo App์ ๋ค ๋ง๋ค๊ณ , money history๋ ๋ค ๋ง๋ค์ด์๋๋ค read me๊น์ง ์์ฑํ๊ณ ? ํ๋ก์ ํธ ์ข ๋ ๋ค๋ฌ๊ณ .. money history๋ ๋ฐฐํฌ๊น์ง ํ๋ค.github page์์ error ๋ฉ์ธ์ง๋ ์์ด ํ๋ฉด์ ๊ทธ๋ฅ 404๋ผ๊ณ ๋ง ์ ํ์ ธ์๊ณ .. r
๊ทธ๋์ ํ์ ๊ฒฐ๊ณผ! ์ฐ๋ฆฌ๋ ์์ ์ ๊ณต์ ํ๋ ์ปค๋ฎค๋ํฐ ์ฌ์ดํธ๋ฅผ ๋ง๋ค๊ธฐ๋กํ๋ค!์ผ๋จ ์ค๋ใ ์ ๋ด๊ฐ react-router v6๋ก routing ์์ ์ ํ๋ค.๋.. ์์ด์ด ํ๋ ์์ ๋ง๋ค์๋ค.์ด์ ๋ด์ผ์ ๋์์ธ์ ์ ํ๋ฉด ๋๋ค!!!!!!
์ค๋ ํ๊ฑฐ ui ์์ฑ3์๊ฐ ํน๊ฐ..์ด์ ๊ธฐ๋ฅ ๊ตฌํ์ ํ๋ ค๊ณ ํ๊ณ ์๋ค redux๋ก ๊ฐ์.. ์ ์ฅํ๊ณ ? supabase๋ก ์ ์ฅํ๋ ค๊ณ ํ๊ณ ์๋ค.
redux์ state๋ก ์ ์ฅํ๋ comment๋ค์ id๊ฐ์ uuid๋ก ์ ํด์คฌ๊ณ supabase์์ ๋ถ๋ฌ์ค๋ ๊ฐ์ ํ ์ด๋ธ์ ์ ์ฅ๋ ๋ ๊ณ ์ ํ id๊ฐ ์์๊ฑฐ๋ผkey={comment.id}๋ก ์ ํด์คฌ๋๋ฐ? ์ค๋ฅ๊ฐ ๋ฌ๋ค. ์์ผ๊น??์ด๊ฑด supabase์ธก์์ ๋ด๊ฐ ์ ์ฅํ comm
์ฐ์ ์ค๋์ ๊ฐ์ธ ํ๋ก์ ํธ ๋ฐ์ ๋ ์ด์๋ค.์ ์ ๋ง๋ค์๋ ๊ณ์ข ๊ธฐ์ ํ๋ก๊ทธ๋จ์์ ์ด์ ํ์๊ฐ์ ์ผ๋ก ์ ์ ๋ง๋ค ๊ฐ์์ ํ๋ฉด์ ๋์์ฃผ๋ ๊ธฐ๋ฅ์ผ๋ก ๋ฐ์ ์ํค๋ฉด ๋๋ค.์ค๋์ ํ๋ก์ ํธ๋ฅผ clone ๋ฐ์์ ์๋ก์ด repository์ remoteํ๋ค.๋, ์ ์ layout ์์คํ ์
์ค๋์ ๊ฐ์๋ฅผ ๋ฃ๊ณ ํ๋ก์ ํธ๋ฅผ ์งํํ์๋ค.axios์ tanstack query, ๊ทธ๋ฆฌ๊ณ zustand์ ๋ํด ๊ฐ์๋ฅผ ๋ค์๋ค.๊ทธ๋ฆฌ๊ณ ์ค๋ ํ๋ก์ ํธ header๋ฅผ ๋ฐ๊ฟจ๋ค ์๋๋ ๊ฐ์ด๋ฐ์ ๋ก๊ณ ์ ์ฌ์ดํธ๋ช ์ ์ง์ด๋ฃ์๋๋ฐ ๋ก๊ทธ์ธํ ์ฌ์ฉ์ ํ๋กํ์ ์ค๋ฅธ์ชฝ์ ๋ฃ์ด์ผ๋ผ์ ์ผ์ชฝ์ผ๋ก
auth.api.js์ด๋ ๊ฒ ํ์๊ฐ์ , ๋ก๊ทธ์ธ์ axios๋ก ๋ฐ์์ค๊ณ ํ์๊ฐ์ .jsxํ์๊ฐ์ ์์ mutateAsync๋ก ๊ฐ์ ์์ฑํด์ฃผ์๋ค.์ด๋ ๊ฒ ํด์ ๋ก๊ทธ์ธ ํ๋ฉด์ผ๋ก ๋์ด๊ฐ๋ฉด, ๋ก๊ทธ์ธ์ ํ๊ฒ ๋๋๋ฐ์ฌ๊ธฐ์ tanstack Query์ onSuccess๋ฅผ ์ฌ์ฉํด์๋ก๊ทธ์ธ์ด ์ฑ๊ณต
์ง๋api์นดํ ์ถ์ฒRTKApp Router๋ next.js์ ์๋ก์ด ๋ผ์ฐํ ์์คํ ์ด๋ค.ํ์ฌ์์ ์ด๋ฏธ Pages Router๋ก ๋ง๋ค์ด ๋๊ฒ์ด ์๊ธฐ ๋๋ฌธ์ Pages Router๋ฅผ ์์ง ์ง์ ํ์ง๋ง App Router๋ฅผ ์ด๋ค.๋ค์ํ ์ ์๊ฐ ์์ง๋ง, ์ผ๋ฐ์ ์ผ๋ก ๋ค์์ ํน์ง์ด
์นด์นด์ค๋งต ์ง๋ api๋ฅผ ์ด์ฉํด์ํ์ฌ react-kakao-maps-sdk ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํด์ map๋ฅผ ์ด์ฉํ๊ณ ์๋ค.์ผ๋จ ํ์ฌ ๊ตฌํํ๊ฑด์ง๋ ์์ง์ผ ๋๋ง๋ค ์ค์ฌ ์ขํ์ ๋ง์ปค ํ์ : debouncing์ ์ด์ฉํด์ ์์ง์ด๊ณ ๋์ ์ ์ ๋ค์ ๋ง์ปค๊ฐ ์์ง์ด๊ฒ ํด๋จ๋ค.๊ฒ์ํ
app ๋๋ ํฐ๋ฆฌ ์๋์์ ํด๋ ๊ตฌ์กฐ๊ฐ ๊ทธ๋๋ก url ๊ฒฝ๋ก๊ฐ ๋๋ค.์์ธ์ฌํญ : app ๋๋ ํฐ๋ฆฌ ์๋์ ํด๋๋ก ์กด์ฌํด๋ url ์๋๋๊ฒฝ์ฐ(ํด๋๋ช ) : url ๊ฒฝ๋ก์์ ํด๋น ํด๋ ์ ์ธ, ํ์ง๋ง ๋ผ์ฐํ ์์คํ ์์ ์กด์ฌํ๋ค.localhost/(ํด๋๋ช )/page.tsx๋ก ๋๋ฉด
typescript์ next.js์์ tailwind์ cva๋ฅผ ์ด์ฉํด์ ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฌ์ฉํ๋ ๋ฒ์ ๋ํด ๋ฐฐ์ ๋ค.์ด๋ ๊ฒ ์ฌ์ฉ๋๋๋ฐ, variants๋ ์์ props์ ๋ฃ์ ๊ฐ์ ์ด๋ฆ์ด ์ผ์นํ๋ ๊ฒ์ ์ฐพ์ className์ ์ด๋ฆ์ ํด๋นํ๋ ๊ฐ์ ๋ฃ๋๊ฒ์ด๋ค.๋ฐ๋ผ์,
axios๋ก ๋ฐ์์ดtypes ํด๋ > country.type.ts ํ์ผ ์์ฑconsole.log๋ก api ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ํ์ธ ํ type์ ๋ค ์ง์ ํด์คฌ๋ค.css๋ฅผ ๊ทธ๋์ ์คํ์ผ๋ ์ปดํฌ๋ํธ๋ก๋ง ์งํํด์ ์ด ๊ธฐํ์ tailwind๋ฅผ ์จ๋ณด์๋ค.๊ฐํธํ๊ณ ์ง๊ด์ ์ด๋ผ์ ๋ฐ์ํ์ผ๋ก
typescript๋ฅผ ์์ํ๋ ์ ๋ง ๋ชจ๋ฅด๊ฒ ๋ ๊ฒ๋ค์ด ๋ง๋ค.select box๋ฅผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์ฐ๊ณ ์ถ์ด์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์นํ ํ ์ฌ์ฉํ์๋ค.๊ทผ๋ฐ.. option์ ๋ฐ์์ค๋ ํ์ ์ ๊ณต์ ๋ฌธ์ ์ฐพ์์ ์ ์ฉํ๋๋ฐ,์ฌ๊ธฐ์ option์ Option์ผ๋ก ๋ฐ์์ค๋ฉด ๋๋์ ํ๋๋ฐ..
๊ฐ์ธ ํ๋ก์ ํธ ๊ณต๋ถ๋ฌดํ์คํฌ๋กค๋ง ๊ตฌํํ๊ธฐ
์ฐ๋ฆฌ๋ ์ฌ๋ฌ ๋ ผ์๋ฅผ ํตํด ์ฌํ ์ค์ผ์ฅด๋ฌ๋ฅผ ๋ง๋ค๊ธฐ๋ก ํ๋ค. ์ ๋ฒ ์ฃผ์ ์ผ์ฃผ์ผ ๊ฐ๋ ๊ธฐํ๊ณผ ๋์๋ ํ์๋ฅผ ํตํด์ ํ๋ก์ ํธ์ ๋ผ๋์ ๊ธฐํ์ ์ด์์ ์ธ์ ๋ค.๋์์ด๋๋๊ณผ ์ฒซ ํ์ ์ธ ๋งํผ ๊ธฐ์กด๊ณผ๋ ๋ค๋ฅธ, ์๋ก์ด ๋ฐฉ์์ผ๋ก ์งํ๋์ด ๋ง์ถฐ๊ฐ๊ธฐ ๋ฐ์ ์ง๋ ์ฃผ์๋ค.๋นผ๊ณกํ ์ฑ์์ง ์ฐ๋ฆฌ์ ์
supabase ํ๋ก์ ํธ๋ ์๋ค๋ ๊ฐ์ ํ์ ์งํํ๊ฒ ๋ค.์ฐ์ , ํ๋ก์ ํธ์ ๋ค์ด๊ฐ์project settings > Authentication > Auth settings๋ก ๋ค์ด๊ฐ๋ฉด ์๋์ ๊ฐ์ ํ๋ฉด์ด ๋ฌ๋ค.์ฌ๊ธฐ์ Auth settings์์ ์ํ๋ ์ต์ ์ ์ฒดํฌํ๋ฉด ๋๋ค.
๋ฐ๊นฅ ๋นจ๊ฐ ๋ฐ์ค๋ฅผ page component๋ก ๋ง๋ค์๋ค. props๋ก๋ title๊ณผ isSocialHidden ๋๊ฐ๋ง ๋ฐ๊ณ ๊ทธ ์์ children์ ๋ฃ์ ์ ์๊ฒ ํ๋ค. ์์ ๋ฐ์ค๊ฐ children์ด ๋๋ค.title์ ์ํฉ์ ๋ฐ๋ผ ๋ฐ๊ฟ ์ ์๊ณ social login
ํ์๊ฐ์ ๊ธฐ๋ฅ์ ์์ฑ ํ๊ณ ๋์, ์ด์ email์ ์ ๋ ฅํ๋ฉด ํด๋น email์ด ํ์์ธ ์ ์ ์ธ์ง ์ ๊ท์ ์ ์ธ์ง ํ์ธํด์ผ๋๋ ๋ก์ง์ ์์ฑํ๊ณ ์์๋ ๋์๋ค..์ด๋ ๊ฒ ์ ์ ์ email๋ก ์ ์ ๊ฐ ์๋์ง ์๋์ง๋ฅผ ๋ณด๋ ๋ก์ง์ ์ธ์ ๋ค.๋ก์ง์๋ ์ ํ ๋ฌธ์ ๊ฐ ์์ด๋ณด์๊ณ console.
supabase์์ ๋น๋ฐ๋ฒํธ๋ฅผ ํ๋ฆฌ๋ฉด ํ๋ ธ๋ค๋ ์๋ต ๊ฐ์ ๋ณด๋ด์ client์์ ์ฌ๋ฌ๊ฐ์ง๋ก ๊ตฌ๋ถ์ง๊ณ ์ถ์๋๋ฐ ๊ทธ๋ฅ ๋ก๊ทธ์ธ ์ฑ๊ณต์ ์ ์ธํ ๋ชจ๋ status๊ฐ ๋ ๋ค catch๋ก๋ง ์กํ.api > auth > login > route.ts๋น๋ฒ์ด ๋ง์ ๋ > ๋ก๊ทธ์ธ ์ฑ๊ณต! 2
์นด์นด์ค์์ ์์ ๋ก๊ทธ์ธ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ธฐ ์ํด์ ๋น์ฆ์ฑ ์ ๋ณด์์ ์ฌ์ ์ ๋ฑ๋ก์ด ํ์ํ๋ค!์๋๋ ์ฌ์ ์ ๋ฒํธ๊ฐ ์๋ ๊ฐ๋ฐ์๋ค์ด ๋น์ฆ์ฑ ์ค์ ์ ํ ์ ์๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํด์ค kakao dev Talk์ ์ฌ๋ผ์จ ๋ต๋ณ์ด๋ค. ์ฌ์ ์๋ฑ๋ก๋ฒํธ๊ฐ ์๋ ๊ฐ์ธ์ด๋ ๋จ์ฒด๊ฐ ์ ๊ณตํ๋ ์๋น์ค์ ์ฑ
์ด๋ ๊ฒ ํ๋ฉด ์์ ๋ก๊ทธ์ธ์ด ์๋ฃ๋ ํ ์์์ ๋ฐฐํฌ๋ ์ฃผ์๋ก redirect ์์ผ์ค๋ค. ๋ฒ์ ์ ๋ฐฐํฌ๋ ๋ค ์์ ๋ก๊ทธ์ธ ํ์ธํด๋ณด๋ localhost:3000์ผ๋ก ๊ณ์ ๋ฆฌ๋ค์ด๋ ํธ ๋๊ธธ๋ url ์ค์ ๋ฌธ์ ์ธ์ง๋ ์๊ฒ ๋๋ฐ ์ด๋์ ์ค์ ํ๋์ง๋ฅผ ๋ชฐ๋๋ค..
์ฑ ์จ๋ณด๋ฉ์ ์ฌ์ฉ์๊ฐ ์ฑ์ ์ฒ์ ์คํํ์ ๋ ํต์ฌ ์ ๋ณด๋ฅผ ์ ๋ฌํ๊ณ , ์ฑ์ ์ฌ์ฉ ๊ฐ๋ฅํ ๊ธฐ๋ฅ์ ์๊ฐํ๋ ๊ณผ์ ์ด๋ค. ์จ๋ณด๋ฉ ํ์ด์ง-์ค๋ช ์ฐธ๊ณ ์ ์ค๋ช ๊ณผ ๊ฐ์ด ์ฌ์ค ์ฑ์ ์จ๋ณด๋ฉ์ด ์ฃผ๋ก ๋ค์ด๊ฐ์ง๋ง ์ฐ๋ฆฌ๋ ๋ ผ์๋ฅผ ํตํด ์น์์๋ ๊ฐ๋จํ ์จ๋ณด๋ฉ ํ์ด์ง๋ฅผ ๋ง๋ค์ด์ ์ ์ ๊ฐ ์ง์ ํ์ ๋
์ ์ ๊ฐ ๋ก๊ทธ์ธ ํ๊ณ ๋์ ๋ถ๊ธฐ์ ์ด ํ์ํ ๋ ์ด ๊ธ์ ์ฝ๋ ๊ฒ์ ์ถ์ฒํ๋ค..๋์ ํ๋ก์ ํธ์ ๊ฒฝ์ฐ ๋ก๊ทธ์ธ ํ ์ฒซ ์ ์ ๋์์ผ๋ก ์ฌํ ์ทจํฅ์ ๋ํด ์ ๋ณด๋ฅผ ์์งํ๋ ๊ณผ์ ์ด ํ์ํ๋ค.์ฃผ์) ๋ค์ด๊ฐ๊ธฐ์ ์์ ์ฝ๋์ ๋ํ ์ค๋ช ๋ง ๋์จ๋ค. supabase์ kakao develop
login์์ ์ด๋ฐ ์ ๋ฐ ์์ ์ ํ๊ณ build๋ฅผ ํด๋ณด๋ ์ค๋ฅ๊ฐ ์๊ฒผ๋ค.๋ถ๋ช ์ฝ๋ ๋ช์ค ์ถ๊ฐํ์ง ์์๋๋ฐ..๊ทผ๋ฐ ์ด๊ฒ ํฐ๋ฏธ๋์ด ์์์ ์ค๋ฅ๊ฐ ์ฃผ๋ฅด๋ฅต ๋จ๊ธธ๋ ์์ค๋ง ๋ณด๊ณ ํด๊ฒฐํ๋ ค ํ์ด์ ์ค๋๊ฑธ๋ ธ๋ค.์๊ณ ๋ณด๋ ๋ด๊ฐ useSearchParams๋ฅผ hooks ํด๋์์ ์ฌ์ฉํ๋๋ฐ