react-img-00.png

๐Ÿค” React๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

ํŽ˜์ด์Šค๋ถ์—์„œ ์ œ๊ณตํ•ด์ฃผ๋Š” ํ”„๋ก ํŠธ์—”๋“œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋ฉฐ, ์ปดํฌ๋„ŒํŠธ ๊ธฐ๋ฐ˜์œผ๋กœ ๋˜์–ด ์žˆ์–ด์„œ ์ปดํฌ๋„ŒํŠธ์— ๋ฐ์ดํ„ฐ๋ฅผ ๋‚ด๋ ค์ฃผ๋ฉด ๊ฐœ๋ฐœ์ž๊ฐ€ ์„ค๊ณ„ํ•œ๋Œ€๋กœ UI๋ฅผ ๋งŒ๋“ค์–ด ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ง„๋‹ค.

์›น ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค๊ธฐ์—๋Š” html, css๋กœ๋„ ์ถฉ๋ถ„ํ•˜์ง€๋งŒ html, css ๋งŒ์œผ๋กœ ๋™์ ์ธ ๋ฐ์ดํ„ฐ๋ฅผ UI์— ๋ฟŒ๋ ค์ฃผ๊ธฐ์—๋Š” ์ ํ•ฉํ•˜์ง€ ์•Š๋‹ค. ์ด ๋•Œ ๋ฆฌ์•กํŠธ๋ฅผ ์ด์šฉํ•œ๋‹ค๋ฉด ์‚ฌ์šฉ์ž์™€ ์ƒํ˜ธ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๋Š” UI๋ฅผ ์†์‰ฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ธฐ๋•Œ๋ฌธ์— ๋ฆฌ์•กํŠธ๋ฅผ ์‚ฌ์šฉ!!

React ๊ณต์‹ ํ™ˆํŽ˜์ด์ง€, ์œ„ํ‚ค๋ฐฑ๊ณผ - React


๐Ÿฅธ ๊ทธ๋Ÿผ ์™œ React๋ฅผ ์‚ฌ์šฉํ•˜์ง€?

๐Ÿ›  Component ๋‹จ์œ„ ์ž‘์„ฑ

์ปดํฌ๋„ŒํŠธ๋Š” UI๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ฐœ๋ณ„์ ์ธ ๋ทฐ ๋‹จ์œ„๋กœ์„œ, UI๋ฅผ ๊ฐœ๋ฐœ์„ ๋ ˆ๊ณ ๋ผ๊ณ  ํ•œ๋‹ค๋ฉด, ์ปดํฌ๋„ŒํŠธ๋Š” ๋ธ”๋ก ์—ญํ• ์„ ํ•˜๊ฒŒ ๋œ๋‹ค. ์ด๋Ÿฌํ•œ ๋ธ”๋ก์„ ์กฐ๋ฆฝํ•ด ํ•˜๋‚˜์˜ ์™„์„ฑํ’ˆ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ๊ณผ ๊ฐ™๋‹ค. ์ด๋Ÿฌํ•œ ํŠน์ง•์€ ํ•˜๋‚˜์˜ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์—ฌ๋Ÿฌ ๋ถ€๋ถ„์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค. ๊ฐ€๋ น, ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์—ฌ๋Ÿฌ ๊ณณ์— ๋ฒ„ํŠผ์ด ํ•„์š”ํ•˜๋‹ค๋ฉด, ๊ณตํ†ต๋œ ํ•˜๋‚˜์˜ ๋ฒ„ํŠผ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ทธ ์ปดํฌ๋„ŒํŠธ๋ฅผ ํ•„์š”ํ•œ ๊ณณ์— ๊ฐ€์ ธ๋‹ค ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

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

๐Ÿ›  JSX

JSX(Javascript + xml)๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์— ๋Œ€ํ•œ ํ™•์žฅ ๊ตฌ๋ฌธ์œผ๋กœ์„œ, ๋ฆฌ์•กํŠธ์—์„œ element(์š”์†Œ)๋ฅผ ์ œ๊ณตํ•ด ์ค€๋‹ค. ์žฅ์ ์€ ๋งค์šฐ ๋‹ค์–‘ํ•จ!! ๋‹จ์ˆœํžˆ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋งˆํฌ์—… ์ฝ”๋“œ์— ์ต์ˆ™ํ•˜๋‹ค๋ฉด, ๊ทธ๊ฒƒ๋งŒ์œผ๋กœ๋„ JSX๋ฅผ ํ†ตํ•ด ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐ ์‰ฝ๊ฒŒ ์ ์‘ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด๋‹ค.

๐Ÿ›  Virtual DOM

์œ ์ €์˜ ์ธํ„ฐ๋ž™์…˜์— ์˜ํ•ด ์ƒํƒœ ๋ณ€ํ™”๊ฐ€ ์ผ์–ด๋‚˜๋ฉด ๋ธŒ๋ผ์šฐ์ € ์ž‘๋™ ์›๋ฆฌ์— ์˜ํ•ด ๋žœ๋”๋ง ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•˜๊ฒŒ ๋œ๋‹ค. Vitual DOM์€ ์ด๋Ÿฌํ•œ ๊ณผ์ •์— ์˜ํ•ด ๋ฐœ์ƒํ•˜๋Š” ๋น„ํšจ์œจ์„ฑ์„ ์ตœ์†Œํ™”ํ•˜๊ธฐ ์œ„ํ•ด ํƒ„์ƒํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.

Virtual DOM์˜ ๊ฐœ๋…์ด ๊ธฐ์กด์— ์•„์˜ˆ ์—†๋˜ ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ๋˜ํ•œ, Virtual DOM ๊ฐœ๋…์„ ์ ์šฉํ•œ ์œ ์ผํ•œ ํ”„๋ก ํŠธ์•ค๋“œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ / ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ์•„๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ, ๋ฆฌ์•กํŠธ๋Š” ์„ฑ๊ณต์ ์œผ๋กœ Virtual DOM ๊ฐœ๋…์„ ์ ์šฉํ•œ ์„ ๋ฐœ ์ฃผ์ž๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

โš™ Virtual DOM์˜ ์ž‘๋™ ์›๋ฆฌ

์œ ์ € ์ธํ„ฐ๋ž™์…˜์— ์˜ํ•ด View์— ๋ณ€ํ™”๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ 10๊ฐœ์˜ ๋…ธ๋“œ๋ฅผ ์ˆ˜์ •ํ•ด ์ฃผ์–ด์•ผ ํ•œ๋‹ค๋ฉด, 10๋ฒˆ์˜ ๋ ˆ์ด์•„์›ƒ ์žฌ๊ณ„์‚ฐ, 10๋ฒˆ์˜ ๋ฆฌ๋žœ๋”๋ง์ด ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ

Virtual DOM์€ ๋ณ€ํ™”๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด, ์‹ค์ œ DOM์— ์ ์šฉ๋˜๊ธฐ ์ „์— Virtual DOM์— ์šฐ์„  ์ ์šฉ์„ ์‹œ์ผœ, ์‹ค์ œ DOM์— ๋ฐ”๋กœ ์ ์šฉํ•˜๋‚˜, Virtual DOM์— ์ ์šฉํ•˜๋‚˜ ๊ฐ™์€ ์—ฐ์‚ฐ ๋น„์šฉ์ด ํ•„์š”ํ•  ๊ฑฐ๋ผ ์ƒ๊ฐํ•˜์‹ค ์ˆ˜ ์žˆ์ง€๋งŒ, Vitual DOM์€ ๋žœ๋”๋ง ๊ณผ์ •์ด ํ•„์š” ์—†๊ธฐ ๋•Œ๋ฌธ์— ์—ฐ์‚ฐ ๋น„์šฉ์ด ์‹ค์ œ DOM๋ณด๋‹ค ์ ๋‹ค.

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

๋˜ํ•œ, Virtual DOM์€ ์–ด๋–ค ๊ฒŒ ๋ฐ”๋€Œ์—ˆ๋Š”์ง€, ์–ด๋–ค ๊ฒŒ ๋ฐ”๋€Œ์ง€ ์•Š์•˜๋Š”์ง€ ์ž๋™์œผ๋กœ ํŒŒ์•…ํ•˜์—ฌ ํ•„์š”ํ•œ DOM ํŠธ๋ฆฌ๋งŒ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.


๐ŸŽ‰ ๋งˆ๋ฌด๋ฆฌ

React๋Š” ์‚ฌ์šฉ์ž์™€ ์ƒํ˜ธ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๋Š” UI๋ฅผ ์†์‰ฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์œผ๋ฉฐ, Component ๋‹จ์œ„ ์ž‘์„ฑ์„ ํ†ตํ•ด ์ƒ์‚ฐ์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜์— ์šฉ์ดํ•˜๋‹ค.