๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • ์žฅ์›์ต ๊ธฐ์ˆ ๋ธ”๋กœ๊ทธ

๐Ÿ“บ Front End/-- react & redux & nextjs33

[๋ฆฌ์•กํŠธ Hook ์‚ฌ์šฉํ•˜๊ธฐ] useState๋ฅผ ์ด์šฉํ•ด์„œ Functional Component์— state๋ฅผ ๊ด€๋ฆฌํ•˜์ž ๋ฆฌ์•กํŠธ์—์„œ State๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค. Class ์ปดํฌ๋„ŒํŠธ์—์„œ์˜ State ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ์—์„œ์˜ State ๋ฆฌ์•กํŠธ ์ดˆ์‹ฌ์ž๋“ค์€ ์ง€๊ธˆ๊นŒ์ง€ ์ด๋Ÿฐ ์ด์•ผ๊ธฐ๋ฅผ ๋“ค์—ˆ์„ ๊ฒƒ์ด๋‹ค. state๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” Classํ˜• ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค ๋งž๋Š” ๋ง์ด๋‹ค. ํ•˜์ง€๋งŒ ๋ฆฌ์•กํŠธ๊ฐ€ ๋ฐœ์ „ํ•˜๋ฉด์„œ ๋ฆฌ์•กํŠธ๋Š” ํด๋ž˜์Šคํ˜• ์ปดํฌ๋„ŒํŠธ์— ๋Œ€ํ•ด์„œ ๋งŽ์€ ์ƒ๊ฐ์„ ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. Classํ˜• ์ปดํฌ๋„ŒํŠธ์˜ ๋‹จ์  ์žฌ์‚ฌ์šฉ์ด ์–ด๋ ต๋‹ค. ๋ฆฌ์•กํŠธ์˜ ์žฅ์ ์€ ์žฌ์‚ฌ์šฉ์„ฑ์— ์žˆ๋‹ค๊ณ  ๋ณธ์ธ์€ ์ƒ๊ฐํ•˜๋Š”๋ฐ, ํด๋ž˜์Šคํ˜• ์ปดํฌ๋„ŒํŠธ์—์„œ๋Š” ์ปดํฌ๋„ŒํŠธ ์ž์ฒด๋ฅผ ์žฌ์‚ฌ์šฉ ํ•  ์ˆ˜๋Š” ์žˆ์ง€๋งŒ Component class ๋ถ€๋ถ„์ ์ธ ๋กœ์ง ๋ฐ API ์‚ฌ์šฉ์ด state๋ฅผ ์ด์šฉํ•˜๋Š” ์ฒ˜๋ฆฌ์— ์žฌ์‚ฌ์šฉ์— ์ œ์•ฝ ์‚ฌํ•ญ๋“ค์ด ๋”ฐ๋ฅด๊ฒŒ ๋œ๋‹ค. ์ฝ”๋“œ๊ฐ€ ๋ณต์žกํ•ด์ง„๋‹ค. Classํ˜• ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ const.. 2020. 8. 23.
[๋ฆฌ์•กํŠธ ๋ถ„์„ํ•˜๊ธฐ] ๋ฆฌ์•กํŠธ์˜ ๊ฐ€์ƒ Dom์€ Native Dom๊ณผ ๋น„๊ตํ•ด์„œ ์™œ ๋น ๋ฅธ์ง€์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž. ์‚ฌ์‹ค ์ด ๊ธ€์˜ ์ œ๋ชฉ์€ ๋ฆฌ์•กํŠธ์˜ ๊ฐ€์ƒ ๋”์ด ์•„๋‹ˆ๋ผ ๋ชจ๋“  ๊ฐ€์ƒ ๋”์€ ์™œ ๋น ๋ฅธ์ง€. ๋ผ๊ณ  ํ•ด์•ผ ๋งž๋Š” ํ‘œํ˜„์ด๋‹ค. ๊ฐ€์ƒ Dom(Virtural Dom) ์€ ๋ฆฌ์•กํŠธ๋งŒ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ๊ฐœ๋…์ด ์•„๋‹ˆ๋ผ ๋‹ค๋ฅธ ํ”„๋ ˆ์ž„์›Œํฌ๋„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ๊ฐœ๋…์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ๊ฐ€์ƒ dom์„ ์ด์šฉํ•ด์„œ ๋ฆฌ์•กํŠธ๋Š” ์ฒ˜๋ฆฌ๋ฅผ ํ•œ๋‹ค๊ณ  ์•Œ๊ณ  ์žˆ๋Š”๋ฐ, ๋„๋Œ€์ฒด ์™œ, ์–ด๋–ป๊ฒŒ, ๋ฌด์—‡์ด ๋‹ค๋ฅธ์ง€ ํ•œ ๋ฒˆ ์•Œ์•„๋ณด์ž. Dom ์šฐ๋ฆฌ๊ฐ€ ๊ฐ€์ƒ ๋”์„ ์•Œ๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋จผ์ € Dom์— ๋Œ€ํ•ด ์•Œ์•„์•ผ ํ•œ๋‹ค. MDN์—์„œ Dom์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ •์˜ํ•˜๊ณ  ์žˆ๋‹ค. ํ•ต์‹ฌ์€ ์šฐ๋ฆฌ๊ฐ€ Javascript์—์„œ HTML์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ์—ญํ• ์ด๋ผ๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿผ DOM์˜ ์ƒ๊น€์ƒˆ๋Š”? HTML์˜ ๊ตฌ์กฐ๋ฅผ ๋ฌธ์„œํ™” ํ•ด๋†“์€ ๊ฒƒ. ์ฏค์œผ๋กœ ์ƒ๊ฐํ•ด๋ณด๋ฉด ๋”์˜ ๋ชจ์–‘์€ ์•„๋งˆ ๋‹ค์Œ๊ณผ ๊ฐ™์„ ๊ฒƒ์ด๋‹ค. ๋”ฑ ๋ณด๋ฉด ๋ญ๊ฐ€ ๋– ์˜ค๋ฅด์ง€ ์•Š.. 2020. 7. 30.
[๋ฆฌ์•กํŠธ ๋ถ„์„ํ•˜๊ธฐ] ๋ฆฌ์•กํŠธ๊ฐ€ ํŽ˜์ด์ง€๋ฅผ ๋ผ์šฐํŒ… ํ•˜๋Š” ๋ฐฉ๋ฒ• (3) ๋ถ€์ œ :: react-router-dom์„ ์ด์šฉํ•ด์„œ ํŽ˜์ด์ง€ ๋ผ์šฐํŒ… ํ•˜๊ธฐ ์ด ๊ธ€์€ ๋ฆฌ์•กํŠธ์˜ ์ดˆ์‹ฌ์ž๋“ค์„ ์œ„ํ•œ ๊ธ€๋กœ ๊นŠ์€ ๋‚ด์šฉ์€ ์ตœ๋Œ€ํ•œ ๋ฐฐ์ œํ•˜๊ณ  ์‰ฌ์šด ๊ฐœ๋…์— ๋Œ€ํ•ด ์ž‘์„ฑํ•˜์˜€๊ณ , ๋ฆฌ์•กํŠธ์˜ ์ง„์ž… ์žฅ๋ฒ…์„ ๋‚ฎ์ถ”๊ธฐ ์œ„ํ•œ ์š”์†Œ๋กœ ์–ด๋ ค์šด ๋‚ด์šฉ์ด ์ƒ๋žต๋˜์–ด ์žˆ์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ถ€๋ถ„์€ ๊ฝค๋‚˜ ํ•ต์‹ฌ์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— 3๋ถ€์ž‘์œผ๋กœ ๋‚˜๋ˆ ์„œ ์„ค๋ช…ํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค. ํ•ด๋‹น ๊ธ€์— ๋Œ€ํ•ด์„œ ๋ณธ์ธ์ด ์ด ๋ถ€๋ถ„์€ ๋„˜์–ด๊ฐ€๋„ ๋˜๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ๋ถ€๋ถ„์€ ๋„˜์–ด๊ฐ€์„œ ํ™•์ธํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•œ๋‹ค. ํ•˜์ง€๋งŒ ๊ธธ์ง€ ์•Š์€ ๊ธ€์ด๋ฏ€๋กœ ๊ฐ€๋ณ๊ฒŒ ์ฝ๋Š” ๊ฒƒ๋„ ์ข‹์€ ๋ฐฉ๋ฒ•์ด๋‹ค. 1๋ถ€ ๋ฆฌ์•กํŠธ๊ฐ€ ํŽ˜์ด์ง€๋ฅผ ๋ผ์šฐํŒ… ํ•˜๋Š” ๋ฐฉ๋ฒ• 2๋ถ€ Browser History API๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํŽ˜์ด์ง€ ๋ผ์šฐํŒ… ํ•˜๊ธฐ 3๋ถ€ react-router-dom์„ ์ด์šฉํ•ด์„œ ํŽ˜์ด์ง€ ๋ผ์šฐํŒ… ํ•˜๊ธฐ ์šฐ๋ฆฐ ์ง€๋‚œ ์‹œ๊ฐ„์— Brower Histroty API๋ฅผ ํ†ตํ•ด์„œ ํŽ˜์ด์ง€๋ฅผ ์„œ๋ฒ„์˜ ์š”์ฒญ ์—†์ด ๋ผ์šฐํŒ… ํ•˜๋Š”.. 2020. 7. 20.
[๋ฆฌ์•กํŠธ ๋ถ„์„ํ•˜๊ธฐ] ๋ฆฌ์•กํŠธ๊ฐ€ ํŽ˜์ด์ง€๋ฅผ ๋ผ์šฐํŒ… ํ•˜๋Š” ๋ฐฉ๋ฒ• (2) ๋ถ€์ œ :: Broswer History API๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํŽ˜์ด์ง€ ๋ผ์šฐํŒ… ํ•˜๊ธฐ ์ด ๊ธ€์€ ๋ฆฌ์•กํŠธ์˜ ์ดˆ์‹ฌ์ž๋“ค์„ ์œ„ํ•œ ๊ธ€๋กœ ๊นŠ์€ ๋‚ด์šฉ์€ ์ตœ๋Œ€ํ•œ ๋ฐฐ์ œํ•˜๊ณ  ์‰ฌ์šด ๊ฐœ๋…์— ๋Œ€ํ•ด ์ž‘์„ฑํ•˜์˜€๊ณ , ๋ฆฌ์•กํŠธ์˜ ์ง„์ž… ์žฅ๋ฒ…์„ ๋‚ฎ์ถ”๊ธฐ ์œ„ํ•œ ์š”์†Œ๋กœ ์–ด๋ ค์šด ๋‚ด์šฉ์ด ์ƒ๋žต๋˜์–ด ์žˆ์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ถ€๋ถ„์€ ๊ฝค๋‚˜ ํ•ต์‹ฌ์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— 3๋ถ€์ž‘์œผ๋กœ ๋‚˜๋ˆ ์„œ ์„ค๋ช…ํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค. ํ•ด๋‹น ๊ธ€์— ๋Œ€ํ•ด์„œ ๋ณธ์ธ์ด ์ด ๋ถ€๋ถ„์€ ๋„˜์–ด๊ฐ€๋„ ๋˜๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ๋ถ€๋ถ„์€ ๋„˜์–ด๊ฐ€์„œ ํ™•์ธํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•œ๋‹ค. ํ•˜์ง€๋งŒ ๊ธธ์ง€ ์•Š์€ ๊ธ€์ด๋ฏ€๋กœ ๊ฐ€๋ณ๊ฒŒ ์ฝ๋Š” ๊ฒƒ๋„ ์ข‹์€ ๋ฐฉ๋ฒ•์ด๋‹ค. 1๋ถ€ ๋ฆฌ์•กํŠธ๊ฐ€ ํŽ˜์ด์ง€๋ฅผ ๋ผ์šฐํŒ… ํ•˜๋Š” ๋ฐฉ๋ฒ• 2๋ถ€ Broswer History API๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํŽ˜์ด์ง€ ๋ผ์šฐํŒ… ํ•˜๊ธฐ 3๋ถ€ react-router-dom์„ ์ด์šฉํ•ด์„œ ํŽ˜์ด์ง€ ๋ผ์šฐํŒ… ํ•˜๊ธฐ ์šฐ๋ฆฌ๋Š” ์ €๋ฒˆ ์‹œ๊ฐ„์— ๋ฆฌ์•กํŠธ๊ฐ€ ํŽ˜์ด์ง€์—์„œ ์–ด๋–ค ์‹์œผ๋กœ ๋ผ์šฐํŒ… ๋˜๊ธธ ์›ํ•˜๋Š”์ง€? ์— ๋Œ€ํ•ด์„œ ์ž ๊น ์•Œ์•„๋ณด์•˜๋‹ค.. 2020. 7. 20.
[๋ฆฌ์•กํŠธ ๋ถ„์„ํ•˜๊ธฐ] ๋ฆฌ์•กํŠธ๊ฐ€ ํŽ˜์ด์ง€๋ฅผ ๋ผ์šฐํŒ… ํ•˜๋Š” ๋ฐฉ๋ฒ• (1) ๋ถ€์ œ :: Single Page Application์ด ๋ฌด์—‡์ด๊ณ  ์–ด๋–ป๊ฒŒ ๋ฆฌ์•กํŠธ์—์„œ ์‚ฌ์šฉํ• ๊นŒ? ์ด ๊ธ€์€ ๋ฆฌ์•กํŠธ์˜ ์ดˆ์‹ฌ์ž๋“ค์„ ์œ„ํ•œ ๊ธ€๋กœ ๊นŠ์€ ๋‚ด์šฉ์€ ์ตœ๋Œ€ํ•œ ๋ฐฐ์ œํ•˜๊ณ  ์‰ฌ์šด ๊ฐœ๋…์— ๋Œ€ํ•ด ์ž‘์„ฑํ•˜์˜€๊ณ , ๋ฆฌ์•กํŠธ์˜ ์ง„์ž… ์žฅ๋ฒ…์„ ๋‚ฎ์ถ”๊ธฐ ์œ„ํ•œ ์š”์†Œ๋กœ ์–ด๋ ค์šด ๋‚ด์šฉ์ด ์ƒ๋žต๋˜์–ด ์žˆ์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ถ€๋ถ„์€ ๊ฝค๋‚˜ ํ•ต์‹ฌ์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— 3๋ถ€์ž‘์œผ๋กœ ๋‚˜๋ˆ ์„œ ์„ค๋ช…ํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค. ํ•ด๋‹น ๊ธ€์— ๋Œ€ํ•ด์„œ ๋ณธ์ธ์ด ์ด ๋ถ€๋ถ„์€ ๋„˜์–ด๊ฐ€๋„ ๋˜๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ๋ถ€๋ถ„์€ ๋„˜์–ด๊ฐ€์„œ ํ™•์ธํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•œ๋‹ค. ํ•˜์ง€๋งŒ ๊ธธ์ง€ ์•Š์€ ๊ธ€์ด๋ฏ€๋กœ ๊ฐ€๋ณ๊ฒŒ ์ฝ๋Š” ๊ฒƒ๋„ ์ข‹์€ ๋ฐฉ๋ฒ•์ด๋‹ค. 1๋ถ€ ๋ฆฌ์•กํŠธ๊ฐ€ ํŽ˜์ด์ง€๋ฅผ ๋ผ์šฐํŒ… ํ•˜๋Š” ๋ฐฉ๋ฒ• 2๋ถ€ Broswer History API๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํŽ˜์ด์ง€ ๋ผ์šฐํŒ… ํ•˜๊ธฐ 3๋ถ€ react-router-dom์„ ์ด์šฉํ•ด์„œ ํŽ˜์ด์ง€ ๋ผ์šฐํŒ… ํ•˜๊ธฐ ์ด๋ฒˆ ์ฃผ์ œ์— ๋Œ€ํ•ด์„œ ์ด์•ผ๊ธฐ๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด์„  ์šฐ์„  ํŽ˜์ด์ง€๊ฐ€ ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ง€๋Š”์ง€ ์•Œ์•„์•ผ ํ•œ.. 2020. 7. 20.
[๋ฆฌ์•กํŠธ ๋ถ„์„ํ•˜๊ธฐ] ๋ฆฌ์•กํŠธ์˜ ํ•ต์‹ฌ JSX์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž. (๋ถ€์ œ :: ๋ฆฌ์•กํŠธ์—์„œ๋Š” JSX๋ฅผ ์–ด๋–ป๊ฒŒ ์ด์šฉํ• ๊นŒ?) ์šฐ๋ฆฌ๋Š” ์ง€๊ธˆ๊นŒ์ง€ ๊ณ„์† ๋ฆฌ์•กํŠธ์— ๋Œ€ํ•œ ํ•ต์‹ฌ์— ๋Œ€ํ•ด์„œ ์ด์•ผ๊ธฐ๋ฅผ ํ–ˆ์—ˆ๋‹ค. ์ด์ œ ๊ทธ ๋ฆฌ์•กํŠธ๋ผ๋Š” ๊ฒƒ์ด ์–ด๋–ค ์‹์œผ๋กœ ๋Œ์•„๊ฐ€๋Š”์ง€ ํ™•์ธํ•ด๋ณด์ž. JSX JSX๋Š” JavascriptXML์ด๋ผ๊ณ  ํ•˜๋Š”๋ฐ, ์ด๋Š” Javascript๋„ ์•„๋‹ˆ๊ณ  HTML๋„ ์•„๋‹Œ ๊ฒƒ์ด๋‹ค. ์ •ํ™•ํžˆ๋Š” ์Šคํฌ๋ฆฝํŠธ์— ํ™•์žฅ ๋ฌธ๋ฒ•์ด๋ผ๊ณ  ํ•˜๋Š” ๊ฒƒ์ธ๋ฐ, ์šฐ๋ฆฌ๋Š” ๋ฆฌ์•กํŠธ๋กœ ์ด JSX๋ฅผ ํ• ์šฉํ•˜์—ฌ UI๋ฅผ ๊ตฌ์„ฑํ•  ๊ฒƒ์ด๋‹ค. ์ด๋ ‡๊ฒŒ ๋ง ํ•˜๋ฉด ๋„ˆ๋ฌด ์–ด๋ ค์šฐ๋ฏ€๋กœ ์šฐ๋ฆฌ๊ฐ€ create-react-app์„ ํ†ตํ•ด์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ–ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ณ , ํ•ด๋‹น ์ฝ”๋“œ์—์„œ JSX๋ž€ ๋ฌด์—‡์ธ์ง€ ๋ณด์ด๊ฒ ๋‹ค. ์ฝ”๋“œ๋กœ ๋ด๋ณด์ž ์šฐ๋ฆฌ์˜ ํ”„๋กœ์ ํŠธ์—์„œ Index.js์— ์žˆ๋Š” ์ฝ”๋“œ๋ฅผ ํ•œ ๋ฒˆ ๋ด๋ณด์ž. ReactDOM.render();๋ผ๋Š” ๊ตฌ๋ฌธ์—์„œ ์šฐ๋ฆฌ๋Š” JSX๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ์ด๋‹ค. ์›๋ž˜ ์ฝ”๋“œ๋ฅผ ์ง€์›Œ๋ณด๊ณ  ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ตฌ์„ฑํ•ด๋ณด์ž... 2020. 7. 20.