๐Ÿ“Œ ๊ธฐ์ˆ  ๋ฉด์ ‘ ์ค€๋น„ ๊ด€๋ จ_React

post-thumbnail

Q : React์˜ state์™€ props์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”.

A : React์—์„œ state์™€ props๋Š” ์ปดํฌ๋„ŒํŠธ ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๊ณ  ๊ด€๋ฆฌํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์ค‘์š”ํ•œ ๊ฐœ๋…์ž…๋‹ˆ๋‹ค.
state๋ž€ ์ปดํฌ๋„ŒํŠธ ๋‚ด์—์„œ ๊ด€๋ฆฌ๋˜๋Š” ๋กœ์ปฌ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋ฉฐ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋‚ด๋ถ€์ ์œผ๋กœ ์ƒํƒœ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๊ณ  ์ƒํƒœ๊ฐ€ ๋ณ€๊ฒฝ๋  ๋•Œ๋งˆ๋‹ค ์ž๋™์œผ๋กœ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋‹ค์‹œ ๋ Œ๋˜๋งํ•ฉ๋‹ˆ๋‹ค.
props๋Š” ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ๋กœ๋ถ€ํ„ฐ ์ž์‹ ์ปดํฌ๋„ŒํŠธ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋ฉฐ ์ž์‹ ์ปดํฌ๋„ŒํŠธ์—์„œ๋Š” ์ด๋ฅผ ์ง์ ‘ ์ˆ˜์ •ํ•  ์ˆ˜ ์—†๊ณ  ์ฝ๊ธฐ ์ „์šฉ์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.


Q : React ์ปดํฌ๋„ŒํŠธ์˜ key ์†์„ฑ์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”.

A : ๋ฆฌ์•กํŠธ๋Š” ์ปดํฌ๋„ŒํŠธ์˜ ์ƒํƒœ๋‚˜ ์†์„ฑ์ด ๋ณ€ํ• ๋•Œ๋งˆ๋‹ค ๋ Œ๋”๋ง์ด ๋˜๋Š”๋ฐ ๊ธฐ์กด ์š”์†Œ๋“ค ๋’ค์— ์ƒˆ๋กœ์šด ๋‚ด์šฉ์„ ์ถ”๊ฐ€ํ•  ๊ฒฝ์šฐ ๋ชจ๋“  ๋ถ€๋ถ„์ด ์žฌ๋ Œ๋”๋ง์ด ๋˜๋Š”๋ฐ ์ด๋Ÿฐ ์ƒํ™ฉ์„ ์ตœ์ ํ™”ํ•˜๊ธฐ ์œ„ํ•ด key ์†์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ ํ•ญ๋ชฉ์— ๊ณ ์œ ํ•œ ์‹๋ณ„์ž๋ฅผ ๋ถ€์—ฌํ•ด์ฃผ๊ณ  React ์—…๋ฐ์ดํŠธ ์‹œ์— ์–ด๋–ค ํ•ญ๋ชฉ์ด ๋ณ€๊ฒฝ๋˜์—ˆ๋Š”์ง€ ์‹๋ณ„์„ ํ•˜๊ณ  ๋ณ€๊ฒฝ๋œ ํ•ญ๋ชฉ๋งŒ ์—…๋ฐ์ดํŠธ ๋จ์œผ๋กœ์จ ์„ฑ๋Šฅ ํ–ฅ์ƒ๊ณผ ๋ถˆํ•„์š”ํ•œ ๋ Œ๋”๋ง์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

React์˜ Key๋Š” ๊ฐ€๋Šฅํ•˜๋ฉด ํ•ญ๋ชฉ ์ž์ฒด์˜ ๊ณ ์œ ํ•œ ์‹๋ณ„์ž๋ฅผ key๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ข‹๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋ฐฐ์—ด ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ณ ์œ ํ•œ ํ‚ค๋ฅผ ํ• ๋‹นํ•˜๊ฒŒ ๋˜๋ฉด ํ•ญ๋ชฉ์˜ ์ถ”๊ฐ€๋‚˜ ์‚ญ์ œ๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ ๋ฌธ์ œ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค.


Q : ์ƒํƒœ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ํ•„์š”์„ฑ์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

A : ์ƒํƒœ ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋Œ€๊ทœ๋ชจ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋ณต์žกํ•œ ์ƒํƒœ ๋ฐ ์ปดํฌ๋„ŒํŠธ ๊ฐ„ ํ†ต์‹ ์„ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๋ฉฐ, ์ค‘์•™ํ™”๋œ ๋ฐ์ดํ„ฐ ํ๋ฆ„์„ ์ œ๊ณตํ•˜์—ฌ ์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ ์ƒํƒœ ์—…๋ฐ์ดํŠธ์™€ ์œ ์ง€ ๋ณด์ˆ˜์„ฑ์„ ์ด‰์ง„ํ•ฉ๋‹ˆ๋‹ค. Redux์™€ ๊ฐ™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” React ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋ฉฐ, ์ค‘์•™ํ™”๋œ ์ƒํƒœ๊ด€๋ฆฌ์™€ ๋ถˆ๋ณ€์„ฑ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ํŒจํ„ด์„ ์ œ๊ณตํ•˜์—ฌ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ํšจ๊ณผ์ ์ธ ๋„๊ตฌ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.


Q : Redux์˜ ์ฃผ์š” ๊ฐœ๋…๋“ค๊ณผ ์—ฐ๊ฒฐ ๊ด€๊ณ„๋ฅผ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

A : Redux๋Š” ์ƒํƒœ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋ฉฐ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฃผ์š” ๊ฐœ๋…๋“ค์„ ์ค‘์‹ฌ์œผ๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.
1. Store : ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ƒํƒœ๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ๊ฐ์ฒด์ด๋ฉฐ ์Šคํ† ์–ด๋Š” ๋‹จ์ผ ์ƒํƒœ ํŠธ๋ฆฌ๋ฅผ ๊ฐ€์ง€๋ฉฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ชจ๋“  ์ƒํƒœ๋Š” ์—ฌ๊ธฐ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.
2. Action : ์ƒํƒœ ๋ณ€๊ฒฝ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐ์ฒด๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์Šคํ† ์–ด๋กค ๋ณด๋‚ด์ง€๋ฉฐ ์•ก์…˜์€ type ํ•„๋“œ์™€ ์ถ”๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
3. Reducer : ์•ก์…˜์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒํƒœ๋ฅผ ์–ด๋–ป๊ฒŒ ๋ณ€๊ฒฝํ• ์ง€ ์ •์˜ํ•˜๋Š” ์ˆœ์ˆ˜ ํ•จ์ˆ˜์ด๋ฉฐ ๋ฆฌ๋“€์„œ๋Š” ํ˜„์žฌ ์ƒํƒœ์™€ ์•ก์…˜์„ ๋ฐ›์•„ ์ƒˆ๋กœ์šด ์ƒํƒœ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
4. Dispatch : ์•ก์…˜์„ ์Šคํ† ์–ด์— ๋ณด๋‚ด๋Š” ๋ฉ”์„œ๋“œ์ด๋ฉฐ ๋””์ŠคํŒจ์น˜๋ฅผ ํ†ตํ•ด ์•ก์…˜์„ ๋ฐœ์ƒ์‹œํ‚ค๋ฉด ๋ฆฌ๋“€์„œ๊ฐ€ ํ˜ธ์ถœ๋˜์–ด ์ƒํƒœ๊ฐ€ ์—…๋ฐ์ดํŠธ ๋ฉ๋‹ˆ๋‹ค.
5. Middleware : ์•ก์…˜์ด ๋””์ŠคํŒจ์น˜๋˜์–ด ๋ฆฌ๋“€์„œ์— ๋„๋‹ฌํ•˜๊ธฐ ์ „์— ์‹คํ–‰๋˜๋Š” ์ฝ”๋“œ์ด๋ฉฐ ๋ฏธ๋“ค์›จ์–ด๋Š” ์•ก์…˜์˜ ์ฒ˜๋ฆฌ๋ฅผ ์ค‘๊ฐ„์— ๊ฐ€๋กœ์ฑ„์–ด ๋กœ๊น…, ๋น„๋™๊ธฐ ์ž‘์—… ์ฒ˜๋ฆฌ ๋“ฑ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋””์ŠคํŒจ์น˜๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญํ•œ ์•ก์…˜์ด ์Šคํ† ์–ด๋กค ์ „๋‹ฌ์ด ๋˜๋ฉฐ ๋ฆฌ๋“€์„œ๋Š” ์•ก์…˜์˜ type์— ๋”ฐ๋ผ ์ƒํƒœ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ณ , ์—…๋ฐ์ดํŠธ๋œ ์ƒํƒœ๋Š” ์Šคํ† ์–ด์— ์ €์žฅ์ด ๋˜์–ด์ง‘๋‹ˆ๋‹ค.


Q : React Hook์˜ ๊ฐœ๋…๊ณผ ์‚ฌ์šฉ๊ทœ์น™์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

A : React Hook์€ ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ์—์„œ ์ƒํƒœ๋‚˜ ์ƒ๋ช…์ฃผ๊ธฐ์™€ ๊ฐ™์€ React ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ์—์„œ ํด๋ž˜์Šค ์ปดํฌ๋„ŒํŠธ์˜ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๊ฒƒ์ด ์ฃผ์š” ๋ชฉํ‘œ์ž…๋‹ˆ๋‹ค. Hook์€ ์ตœ์ƒ์œ„ ๋ ˆ๋ฒจ, ํ•จ์ˆ˜ํ˜• ๋‚ด๋ถ€์—์„œ๋งŒ ํ˜ธ์ถœ์ด๋˜์–ด์•ผ ํ•˜๋ฉฐ ํด๋ž˜์Šค ์ปดํฌ๋„ŒํŠธ๋‚˜ ์ผ๋ฐ˜ Javascript ํ•จ์ˆ˜ ๋‚ด์—์„œ๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
์ฃผ๋กœ ์‚ฌ์šฉํ•˜๋Š” Hook์œผ๋กœ๋Š” ์ƒํƒœ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ usestate, ๋ผ์ดํ”„์‚ฌ์ดํด๊ณผ ๊ด€๋ จ๋œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” useEffect, Context๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ƒํƒœ๋ฅผ ์ „์—ญ์ ์œผ๋กœ ๊ณต์œ ํ• ๋•Œ ์‚ฌ์šฉํ•˜๋Š” useContext๊ฐ€ ์žˆ์œผ๋ฉฐ ๊ทธ์™ธ ๋‹ค์–‘ํ•œ Hook์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ์—์„œ๋„ ํด๋ž˜์Šค ์ปดํฌ๋„ŒํŠธ์˜ ํŽธ๋ฆฌํ•œ ๊ธฐ๋Šฅ๋“ค์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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