3. React

Keyword

  1. React๋ž€?

  2. React ์ปดํฌ๋„ŒํŠธ

  3. React ๋ฆฌ๋ Œ๋”๋ง

  4. IoC(Inversion of Control)

  5. Library vs Framework

1. React?

๋ฆฌ์•กํŠธ๋Š” ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค(User Interface)๋ฅผ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•œ Javascript ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์ปดํฌ๋„ŒํŠธ ๊ธฐ๋ฐ˜ ์•„๊ธฐํ…์ฒ˜๋ฅผ ํ†ตํ•ด ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ UI๋ฅผ ๋งŒ๋“ฆ์œผ๋กœ ์ƒ์‚ฐ์„ฑ์ด ์ฆ๊ฐ€ํ•œ๋‹ค. ๋˜ํ•œ UI์˜ ๋ณ€๊ฒฝ๋œ ๋ถ€๋ถ„๋งŒ์„ ์—…๋ฐ์ดํŠธํ•˜์—ฌ ๋น ๋ฅธ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์ œ๊ณตํ•œ๋‹ค.


2. React ์ปดํฌ๋„ŒํŠธ

๋ฆฌ์•กํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ UI๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋…๋ฆฝ์ ์ธ ๋‹จ์œ„๋กœ ์ปดํฌ๋„ŒํŠธ๋Š” ์ƒํƒœ(state) ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์œผ๋ฉฐ UI๋ฅผ ํ‘œํ˜„ํ•˜๊ณ  ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.


3. React ๋ฆฌ๋ Œ๋”๋ง

React์—์„œ์˜ ๋ฆฌ๋ Œ๋”๋ง์ด๋ž€ renderํ•จ์ˆ˜์˜ ํ˜ธ์ถœ์„ ์˜๋ฏธ ์ด๊ฒƒ์€ ์‹ค์ œ DOM์—์„œ UI๋ฅผ ๋‹ค์‹œ ๊ทธ๋ฆฌ๋Š”๊ฒƒ์„ ๋งํ•œ๋‹ค. ์ปดํฌ๋„ŒํŠธ์˜ state, props์˜ ๋ณ€๊ฒฝ์œผ๋กœ ์ธํ•œ ์ปดํฌ๋„ŒํŠธ UI ์—…๋ฐ์ดํŠธ๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•œ๋‹ค.

  • ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•œ๋‹ค๋Š” ๊ฒƒ์€ setStateํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ์ปดํฌ๋„ŒํŠธ UI ์—…๋ฐ์ดํŠธ๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•˜๋Š” ๊ฒƒ์ธ๋ฐ ์ด๋Š” renderํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค๋Š” ์˜๋ฏธ๋‹ค.

  • ์œ„์™€ ๊ฐ™์€ ์ด์œ ๋กœ props์˜ ๋ณ€๊ฒฝ ์—ฌ๋ถ€์™€ ์ƒ๊ด€์—†์ด ๋ชจ๋“  ํ•˜์œ„ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ฆฌ๋ Œ๋”๋ง ๋œ๋‹ค

    • ์ƒ๊ฐํ•ด๋ณด๋ฉด ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ์˜ return๊ฐ’, ํด๋ž˜์Šค ์ปดํฌ๋„ŒํŠธ์˜ renderํ•จ์ˆ˜์˜ JSX๋ฌธ๋ฒ•์œผ๋กœ ์ž์‹ ์ปดํฌ๋„ŒํŠธ๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฆฌ๋ Œ๋”๋ง ๋˜๋Š”๊ฒƒ์ด ๋‹น์—ฐํ•จ

props๊ฐ€ ๋ณ€๊ฒฝ๋  ๋•Œ, ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์—…๋ฐ์ดํŠธ ๋˜์ง€ ์•Š๋Š” ์ด์œ ?

  1. props๊ฐ€ setStateํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ์˜ฌ๋ฐ”๋ฅธ ์—…๋ฐ์ดํŠธ๊ฐ€ ๋˜์ง€ ์•Š์•˜์„ ๊ฒฝ์šฐ

  2. props์˜ ๋ฐ์ดํ„ฐ ์ฐธ์กฐ๊ฐ€ ๋™์ผํ•  ๊ฒฝ์šฐ

Javascript์˜ ์ฐธ์กฐ๊ฐ’์€ ๋ฉ”๋ชจ๋ฆฌ์˜ ์ฃผ์†Œ๊ฐ’(์ž์„ธํžˆ๋Š” ์กฐ๊ธˆ ๋” ๋ณต์žกํ•จ, ์‹๋ณ„์ž์™€ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜๋Š” ์˜์—ญ์˜ ๊ฐœ๋…์ด ์žˆ์Œ)์„ ๋ณต์‚ฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋™์ผ ๋ฉ”๋ชจ๋ฆฌ๊ณต๊ฐ„์„ ์ฐธ์กฐํ•˜๊ฒŒ ๋˜๋ฏ€๋กœ props ๊ฐ์ฒด๋ฅผ ์ง์ ‘ ๋ณ€๊ฒฝํ•˜๊ฒŒ ๋  ๊ฒฝ์šฐ React๊ฐ€ ๊ฐ์ง€ํ•˜์ง€ ๋ชปํ•จ


4. IoC(Inversion of Control)

Framework์˜ ์ฃผ์š”ํ•œ ํŠน์ง•์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ์˜ ํ๋ฆ„ ์ œ์–ด๋ฅผ ๊ฐœ๋ฐœ์ž๊ฐ€ ์•„๋‹Œ ํ”„๋ ˆ์ž„์›Œํฌ์— ์œ„์ž„ํ•˜๋Š” ๊ฐœ๋…์ด๋‹ค.

  • ๋ฆฌ์•กํŠธ์— ๋Œ€ํ•ด์„œ ์ฐพ์•„๋ณด๋ฉด view๋งŒ์„ ์‹ ๊ฒฝ์“ฐ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ ๋˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ผ ์„ค๋ช…ํ•œ๋‹ค.

  • ๊ฐœ๋ฐœ์ž๋Š” ๊ทธ์ € ๊ทœ์น™์— ๋”ฐ๋ผ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์„ ์–ธํ•˜๊ณ  ์กฐํ•ฉํ•˜์—ฌ UI๋ฅผ ์„ค๊ณ„ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ์ปดํฌ๋„ŒํŠธ ์ƒ๋ช…์ฃผ๊ธฐ ๊ด€๋ฆฌ, ๋ Œ๋”๋ง, ์—…๋ฐ์ดํŠธ, ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ๋ฅผ ๋ฆฌ์•กํŠธ๊ฐ€ ์ž๋™์œผ๋กœ ๊ด€๋ฆฌํ•œ๋‹ค.

  • JSX๋Š” Javascript์˜ ํ™•์žฅ๋œ ๋ฌธ๋ฒ•์œผ๋กœ XML์˜ ๊ตฌ์กฐ๋ฅผ ๋”ฐ๋ฅด๋ฉฐ HTML ๋งˆํฌ์—…์ฒ˜๋Ÿผ ์ž‘์„ฑํ•˜๋ฉด ๋ฆฌ์•กํŠธ๊ฐ€ ์•Œ์•„์„œ element๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ด JSX๋ฅผ ํ†ตํ•ด UI๋ฅผ ์„ ์–ธ์ ์œผ๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•˜๊ณ  ๊ฐ€๋…์„ฑ ๋†’๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.


5. Library vs Framework

์ œ์–ด์˜ ์†Œ์œ ๊ฐ€ ๋ˆ„๊ตฌ์—๊ฒŒ ์žˆ๋Š”์ง€๋กœ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋‹ค.

Library

  • ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์ œ์–ด ๊ถŒํ•œ์ด ์žˆ์–ด ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์„ ํ˜ธ์ถœํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋‹จ๋… ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ๋˜๋Š” ๋‹ค๋ฅธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ํ”„๋ ˆ์ž„์›Œํฌ์™€ ์กฐํ•ฉํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

    • ์˜ˆ๋ฅผ ๋“ค๋ฉด, Redux ์ „์—ญ ์ƒํƒœ ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ React์˜ ์กฐํ•ฉ์ด ์žˆ๋‹ค.

Framework

  • ๊ฐœ๋ฐœ์ž๋Š” ํ”„๋ ˆ์ž„์›Œํฌ์˜ ๊ทœ์น™์— ๋”ฐ๋ผ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ , ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ํ๋ฆ„์„ ์ œ์–ดํ•ด ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์„ ํ˜ธ์ถœํ•œ๋‹ค.

  • ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ๋‚ด๋ถ€์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ๋‹ค.

๋ฆฌ์•กํŠธ๋Š” ๊ทœ์น™์— ๋”ฐ๋ผ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด์„œ ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ž์œ ๋กญ๊ฒŒ ์กฐํ•ฉํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ๋‘ ๊ฐ€์ง€ ์„ฑ๊ฒฉ์„ ๋ชจ๋‘ ๊ฐ€์ง€๊ณ  ์žˆ์Œ


ํ‚ค์›Œ๋“œ ์ถ”๊ฐ€ ์ •๋ฆฌ

  • DOM

  • Virtual DOM

  • ๋ฆฌ๋ Œ๋”๋ง ์ตœ์ ํ™”(useMemo, useCallback)

Last updated