1. React Component

React๋กœ UI๋ฅผ ์„ค๊ณ„ํ•˜๋Š” 5๊ฐ€์ง€ ์›์น™์— ๋Œ€ํ•ด ์ง€์†์ ์œผ๋กœ ํ›ˆ๋ จํ•˜๊ณ  ๋ณต์žกํ•œ UI๋ฅผ ์„ค๊ณ„ํ•˜๊ธฐ ์œ„ํ•œ ๋‹จ์ˆœํ•œ ์ปดํฌ๋„ŒํŠธ๋กœ ๋ถ„๋ฆฌํ•˜๋Š” ๊ณผ์ •์— ๋Œ€ํ•ด ์ดํ•ดํ•˜์ž.

Thinking in React (React๋กœ ์‚ฌ๊ณ ํ•˜๊ธฐ)

Step 1: Break the UI into a component hierarchy

UI๋ฅผ ์ปดํฌ๋„ŒํŠธ ๊ณ„์ธต ๊ตฌ์กฐ(ํ•˜์ด๋ผํ‚ค)๋กœ ๋‚˜๋ˆ„๊ธฐ

Step 2: Build a static version in React

React๋กœ ์ •์ ์ธ UI ๋งŒ๋“ค๊ธฐ


Keyword

  • REST API ์™€ GraphQL

    • REST API ๋ž€ ๋ฌด์—‡์ธ๊ฐ€

    • GraphQL์€ ์™œ ๋“ฑ์žฅํ–ˆ๋Š”๊ฐ€?

    • REST API vs GraphQL

  • JSON

  • DSL(Domain-Specific Language)

  • ์„ ์–ธํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ

  • ๋ช…๋ นํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ

  • SRP(๋‹จ์ผ ์ฑ…์ž„ ์›์น™)

  • Atomic Design

  • React component ์™€ props


๋ฐ์ดํ„ฐ

๋ฐฑ์—”๋“œ์—์„œ JSON ๋ฐ์ดํ„ฐ๋ฅผ ์‘๋‹ตํ•˜๋Š” API๋ฅผ ์ œ๊ณตํ•œ๋‹ค๊ณ  ๊ฐ€์ •

REST API

์›น ์„œ๋น„์Šค์—์„œ ๋ธŒ๋ผ์šฐ์ €์™€ ์„œ๋ฒ„๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๊ธฐ ์œ„ํ•œ ํ†ต์‹  ์•„ํ‚คํ…์ฒ˜๋กœ URI์— ๋ฆฌ์†Œ์Šค๋ฅผ ๋ช…์‹œํ•˜๊ณ , HTTP Request Method๋ฅผ ํ†ตํ•ด ์ž์›์— ๋Œ€ํ•œ CRUD ์ž‘์—…์„ ์ •์˜ํ•œ๋‹ค.

  • ๋ฆฌ์†Œ์Šค ์ค‘์‹ฌ

  • GET, POST, PUT/PATCH, DELETE (CRUD ์ž‘์—…)

GraphQL

  • REST API์˜ ๋‹จ์ ์„ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด ๋“ฑ์žฅ

  • REST API ๋‹จ์  - Over fetching & Under fetching

    • Over fetching ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ ๋ณด๋‹ค ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜จ ๊ฒฝ์šฐ

    • Under fetching ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ ๋ณด๋‹ค ์ ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜จ ๊ฒฝ์šฐ

  • GraphQL์€ ๋‹จ์ผ ์—”๋“œํฌ์ธํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ์ •๋ณด๋ฅผ ํŠน์ •ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•˜๋‚˜์˜ ์š”์ฒญ๋งŒ์œผ๋กœ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.

  • Query์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค.

  • Query (Read), Mutation(Create, Update, Delete), Subscription(Event)

REST API vs GraphQL

GraphQL์„ ์‚ฌ์šฉํ•ด๋ณด์ง€ ์•Š์•„์„œ ๊ธฐ์ˆ ์— ๋Œ€ํ•œ ์žฅ๋‹จ์ ์˜ ๋น„๊ต๋Š” ํ™•์‹คํžˆ ํ•  ์ˆ˜ ์—†์ง€๋งŒ, REST API๋Š” ์ž์› ์ค‘์‹ฌ์ ์œผ๋กœ ๋ช…์‹œ์™€ ํ–‰์œ„๋กœ ํ‘œํ˜„ํ•˜๋ฏ€๋กœ ์ง๊ด€์ ์ธ ์ดํ•ด๊ฐ€ ๊ฐ€๋Šฅํ•œ ์žฅ์ ๊ณผ Over/Under fetching์˜ ๋‹จ์ ์ด ์กด์žฌํ•˜๋‹ˆ ๋„คํŠธ์›Œํฌ ๋น„์šฉ๊ณผ ํŽ˜์ด์ง€ ์ดˆ๊ธฐ ๋ Œ๋”๋ง ์†๋„๋ฅผ ๋Œ์–ด์˜ฌ๋ฆฌ๊ณ  ์‹ถ๋‹ค๋ฉด GraphQL์„ ์‚ฌ์šฉํ•ด ์›ํ•˜๋Š” ์ •๋ณด๋งŒ ํŠน์ •ํ•ด ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ ๋‹ค. ์ถ”๊ฐ€์ ์œผ๋กœ ๋‹จ์ผ ์—”๋“œํฌ์ธํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฟผ๋ฆฌ๋กœ ์š”์ฒญํ•˜๋ฉด ์˜คํžˆ๋ ค ๋ฐ์ดํ„ฐ ์‚ฌ์ด์ฆˆ๊ฐ€ ๋” ์ปค์ง€์ง€ ์•Š์„๊นŒ?

JSON (JavaScript Object Notation)

Javascript ๊ฐ์ฒด ๋ฌธ๋ฒ•์„ ๋”ฐ๋ฅด๋Š” ๋ฌธ์ž์—ด ๋ฐ์ดํ„ฐ ํฌ๋ฉง์œผ๋กœ key-value ์Œ์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์œผ๋ฉฐ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ„์˜ ํ†ต์‹ ์„ ์ฃผ๊ณ ๋ฐ›์„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

ํ”„๋ก ํŠธ์—”๋“œ๋Š” ์œ„์™€ ๊ฐ™์€ ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉ์ž๊ฐ€ ๋ณผ ์ˆ˜ ์žˆ๋„๋ก UI๋ฅผ ๊ตฌ์„ฑํ•œ๋‹ค. React๋Š” ์„ ์–ธํ˜• UI, ์ฆ‰ XML๊ณผ ์œ ์‚ฌํ•œ ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•ด HTML ๋ฌธ์„œ์ฒ˜๋Ÿผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

DSL (Domain Specific Language)

ํŠน์ • ๋„๋ฉ”์ธ์ด๋‚˜ ๋ฌธ์ œ ์˜์—ญ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ํŠนํ™”๋œ ์–ธ์–ด๋ฅผ ๋งํ•œ๋‹ค. SQL์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์ƒํ˜ธ ์ž‘์šฉํ•˜๊ธฐ ์œ„ํ•œ ์ฟผ๋ฆฌ ์–ธ์–ด๋กœ DSL์˜ ์˜ˆ์‹œ๋‹ค. GraphQL๋„ ์›น ์„œ๋น„์Šค์—์„œ ๋ฐ์ดํ„ฐ ํ†ต์‹ ์„ ์œ„ํ•œ DSL์ด๋‹ค. HTML๊ณผ CSS๋Š” ์›น ํŽ˜์ด์ง€์˜ ๊ตฌ์กฐ์™€ ์Šคํƒ€์ผ๋ง, ๋ ˆ์ด์•„์›ƒ์„ ์ง€์ •ํ•˜๋Š” ์›น ์„œ๋น„์Šค์— ํŠนํ™”๋œ DSL๋กœ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.


์ปดํฌ๋„ŒํŠธ ๊ณ„์ธต ๊ตฌ์กฐ

React์˜ ๊ฐ•๋ ฅํ•œ ํŠน์ง•!

  • ์ปดํฌ๋„ŒํŠธ ๊ธฐ๋ฐ˜ (React App ๊ตฌ์„ฑ ์š”์†Œ)

  • ์ž์ฒด ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์บก์Šํ™”๋œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งŒ๋“ค๊ณ , ์ด๋ฅผ ์กฐํ•ฉํ•˜์—ฌ ๋ณต์žกํ•œ UI๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ถ„๋ฆฌํ•˜๋Š” ๊ธฐ์ค€๋“ค

  1. ๋‹จ์ผ ์ฑ…์ž„ ์›์น™ (SRP - Single Responsibility Principle)

  2. CSS

  3. Design's Layer

  4. Information Architecture

1. ๋‹จ์ผ ์ฑ…์ž„ ์›์น™ (SRP)

๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ์›์น™ ์ค‘ ํ•˜๋‚˜ ๋ชจ๋“  ํด๋ž˜์Šค๋Š” ๋‹จ ํ•˜๋‚˜์˜ ์ฑ…์ž„๋งŒ ๊ฐ€์ง€๋ฉฐ ๊ทธ ์ฑ…์ž„์„ ์บก์Šํ™”ํ•ด์•ผ ํ•œ๋‹ค. React์—์„œ ๋‹จ์ผ ์ฑ…์ž„ ์›์น™์€ ๋ชจ๋“  ์ปดํฌ๋„ŒํŠธ๋Š” ํ•˜๋‚˜์˜ ์ฑ…์ž„์„ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค. ํ•˜๋‚˜์˜ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์™ธ๋ถ€ API ํ˜ธ์ถœ, ์ด๋ฒคํŠธ ํ•ธ๋“ค๋ง, ๋‹ค์ˆ˜์˜ ์ƒํ…Œ๊ด€๋ฆฌ, ์žฅํ™ฉํ•œ JSX ๋“ฑ์œผ๋กœ ์‚ฌ์ด์ฆˆ๊ฐ€ ๋„ˆ๋ฌด ์ปค์ง„๋‹ค๋ฉด ์ปดํฌ๋„ŒํŠธ๋กœ ๋ถ„๋ฆฌ

2. CSS

ํด๋ž˜์Šค ์„ ํƒ์ž๋ฅผ ํ†ตํ•ด ์–ด๋– ํ•œ ์šฉ๋„๋กœ ๋งŒ๋“ค์ง€ ์ƒ๊ฐํ•˜๊ณ  ์ปดํฌ๋„ŒํŠธ ๋ถ„๋ฆฌ

3. Design's Layer

๋””์ž์ธ ํˆด๋กœ ์„ค๊ณ„ํ•œ Layer(๊ณ„์ธต)์— ๋”ฐ๋ผ ์ปดํฌ๋„ŒํŠธ ๋ถ„๋ฆฌ

4. Information Architecture

JSON Schema(๋ฐ์ดํ„ฐ ๊ตฌ์กฐ)์— ๋”ฐ๋ฅธ ์ปดํฌ๋„ŒํŠธ ๋ถ„๋ฆฌ ์ž์—ฐ์Šค๋Ÿฌ์šด SRP๋ฅผ ์œ„ํ•ด ๊ฐ•์ œ๋˜๋ฉฐ ์‹ค์ œ๋กœ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์—๋”ฐ๋ผ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ถ„๋ฆฌํ•˜๊ฒŒ ๋จ. ์ฃผ๋กœ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋กœ ์ธํ•ด ๊ฐ•์ œ์ ์œผ๋กœ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ถ„๋ฆฌํ•˜๊ฒŒ ๋œ๋‹ค.

์ž‘์€ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์กฐ๋ฆฝํ•ด ๋‹ค์–‘ํ•œ ๊ฐ€์ง“์ˆ˜์˜ UI๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ์ „ํ˜•์ ์ธ ๋ฐฉ๋ฒ•

Atomic Design ๊ด€๋ จ ๋งํฌ

๋””์ž์ธ ์‹œ์Šคํ…œ์€ ์–ด๋–ค ์กฐ์ง์ด ๋””์ง€ํ„ธ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋””์ž์ธํ•˜๊ณ  ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐฉ์‹์„ ๋งํ•œ๋‹ค. Atomic Design์€ ๋””์ž์ธ ์‹œ์Šคํ…œ ๋ฐฉ๋ฒ•๋ก  ์ค‘ ํ•˜๋‚˜๋กœ React์— ์ด๋ฅผ ๋„์ž…ํ•ด ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ UI๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ตฌ์กฐํ™”ํ•˜์—ฌ ๊ฐœ๋ฐœ ์ƒ์‚ฐ์„ฑ๊ณผ ์œ ์ง€ ๋ณด์ˆ˜๋ฅผ ์šฉ์ดํ•˜๊ฒŒ ๋งŒ๋“ค์–ด์ค€๋‹ค.

  • Atom Atom์€ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ฐ€์žฅ ์ž‘์€ ๋‹จ์œ„๋กœ ๋ถ„๋ฆฌํ•œ ๊ฒƒ์œผ๋กœ ์ผ๋ฐ˜์ ์œผ๋กœ HTML element ๋‹จ์œ„๋กœ ์ž‘์„ฑ๋œ๋‹ค. ๋‹จ๋… ์‚ฌ์šฉ์€ ์–ด๋ ต๊ณ , ์ด๊ฒƒ๋“ค์„ ๊ฒฐํ•ฉํ•œ molecule, organism ๋‹จ์œ„๋กœ ๊ฒฐํ•ฉํ•ด ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

  • Molecule ์—ฌ๋Ÿฌ๊ฐœ์˜ Atom์„ ์กฐํ•ฉํ•˜์—ฌ SRP๋ฅผ ๋งŒ์กฑํ•˜๋Š” ํ•˜๋‚˜์˜ ์ผ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋‹จ์œ„. Input Atom์— ํ…์ŠคํŠธ๋ฅผ ์ž…๋ ฅํ•˜๊ณ  Button Atom์„ ํด๋ฆญํ•ด form์„ ์ „์†กํ•˜๋Š” molecule์˜ ์˜ˆ์‹œ๊ฐ€ ์žˆ๋‹ค. ํ•˜๋‚˜์˜ ์ฑ…์ž„์„ ๊ฐ€์ง€๋ฏ€๋กœ ์žฌ์‚ฌ์šฉ์„ฑ๊ณผ UI์˜ ์ผ๊ด€์„ฑ, ํ…Œ์ŠคํŠธ์— ์šฉ์ดํ•˜๋‹ค.

  • Organism ์›น ์„œ๋น„์Šค์—์„œ ํ‘œํ˜„๋  ์ˆ˜ ์žˆ๋Š” ๋ช…ํ™•ํ•œ ๋ ˆ์ด์•„์›ƒ๊ณผ ํŠน์ • ์ปจํ…์ŠคํŠธ(ํŠน์ • ์ฝ”๋“œ, ์˜์—ญ์— ๋Œ€ํ•œ ํ™˜๊ฒฝ์ •๋ณด)๋ฅผ ๊ฐ€์ง„๋‹ค. ์ปจํ…์ŠคํŠธ๋ฅผ ๊ฐ€์ง€๊ธฐ ๋•Œ๋ฌธ์— ์žฌ์‚ฌ์šฉ์ด ์–ด๋ ต๋‹ค.

  • Template ์‹ค์ œ ์ฝ˜ํ…์ธ ๋Š” ์—†๋Š” ์ปดํฌ๋„ŒํŠธ๋ฅผ ํŽ˜์ด์ง€ ๋ ˆ์ด์•„์›ƒ์— ๋งž๊ฒŒ ๋ฐฐ์น˜ํ•œ ์™€์ด์–ด ํ”„๋ ˆ์ž„, ์Šค์ผˆ๋ ˆํ†ค UI

  • Page ์œ ์ €๊ฐ€ ๋ณผ ์ˆ˜ ์žˆ๋Š” ์‹ค์ œ ์ปจํ…์ธ ๋ฅผ ๋‹ด๊ณ  ์žˆ๋‹ค.

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

Extract Function

SRP๋ฅผ ์œ„ํ•œ ์ˆ˜๋‹จ, ๋ณต์žกํ•œ ์ฝ”๋“œ๋ฅผ ํ•จ์ˆ˜๋กœ ์ถ”์ถœํ•˜์—ฌ ๋ถ„๋ฆฌํ•˜๊ณ  ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ตฌ์กฐ๋กœ ๋งŒ๋“ ๋‹ค. ์ผ๋‹จ ํ•˜๋‚˜์˜ ์ปดํฌ๋„ŒํŠธ์—์„œ ๊ธธ๊ฒŒ ์ž‘์„ฑํ•˜๊ณ  ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ๊ฐ€ ๋ณด์ด๋ฉด ๋ถ„๋ฆฌํ•œ๋‹ค.


React Component & Props

React Component

  • component๋Š” ์ƒํƒœ๋ฅผ ํ†ตํ•ด ๋™์ ์ธ UI๋ฅผ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๊ณ , ์ด๋ฅผ ์กฐํ•ฉํ•ด ๋ณต์žกํ•œ UI๋ฅผ ๊ตฌ์„ฑ ํ•  ์ˆ˜ ์žˆ๋‹ค.

Props

  • React์˜ Props๋Š” ์ž์‹ ์ปดํฌ๋„ŒํŠธ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ์ปดํฌ๋„ŒํŠธ ๊ฐ„์˜ ๋ฐ์ดํ„ฐ ํ๋ฆ„์„ ์ƒ์„ฑํ•œ๋‹ค.

  • TypeScript๋ฅผ ์ž˜ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์ž˜๋ชป ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค.

  • ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์—ฌ ์žฌ์‚ฌ์šฉ์„ฑ์„ ํ‰๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.


์„ ์–ธํ˜• / ๋ช…๋ นํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ

์„ ์–ธํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ

  • ๋ฌด์—‡์„(What) ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š”์ง€ ๊ฐœ๋ฐœ์ž๊ฐ€ ์›ํ•˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค.

  • ๋‚ด๋ถ€์ ์ธ ๊ตฌํ˜„์„ ์ถ”์ƒํ™”ํ•œ๋‹ค.

2์ฃผ์ฐจ์— ์„ ์–ธ์  API์™€ Virtual DOM์— ๋Œ€ํ•ด ๋‹ค๋ฃฌ์ ์ด ์žˆ๋Š”๋ฐ ์ƒ๊ธฐํ•˜๊ณ ์ž ๋‹ค์‹œ ์ •๋ฆฌ

๋ช…๋ นํ˜•์œผ๋กœ ์ผ์ผํžˆ DOM ์กฐ์ž‘์„ ํ•˜์ง€์•Š๊ณ  React์— ๋ฌด์—‡์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š”์ง€ ์„ ์–ธ์ ์œผ๋กœ ์•Œ๋ ค์ฃผ๋Š” ๋ฐฉ์‹์ด๋‹ค. (๋งˆ์น˜ 'ํ•ด์ค˜!'๊ฐ™์€ ๋Š๋‚Œ์ด๋ž„๊นŒ)

์„ ์–ธ์  API์™€ Virtual DOM์˜ ์ƒ๊ด€ ๊ด€๊ณ„

JSX๋กœ ๋ฐ˜ํ™˜๋œ React element๊ฐ€ Virtual DOM์„ ์ƒ์„ฑํ•˜๋ฉฐ, ์ƒํƒœ ๋ณ€๊ฒฝ๋“ฑ์œผ๋กœ ๋ฆฌ๋ Œ๋”๋ง์ด ํŠธ๋ฆฌ๊ฑฐ๋˜๋ฉด Diffing ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ†ตํ•ด Virtual DOM๊ณผ Real DOM์„ ๋น„๊ต ์ˆœํšŒํ•˜์—ฌ ๋ฆฌ๋ Œ๋”๋ง ์ตœ์ ํ™”๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค. ๊ฐœ๋ฐœ์ž๊ฐ€ ์„ ์–ธ์  API๋ฅผ ํ†ตํ•ด ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ–ˆ์„ ๋ฟ React๊ฐ€ ์ž๋™์œผ๋กœ ๋ณ€๊ฒฝ๋œ ๋‚ด์šฉ์„ ๋ฐ˜์˜ํ•œ UI ์—…๋ฐ์ดํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค.

๋ช…๋ นํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ

  • ์–ด๋–ป๊ฒŒ(How) ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š”์ง€ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ผ์ผํžˆ ๋ช…์‹œ์ ์œผ๋กœ ์ง€์ •ํ•œ๋‹ค.

  • ๋‚ด๋ถ€์ ์ธ ๊ตฌํ˜„์„ ๋ช…์‹œ์ ์œผ๋กœ ์ž‘์„ฑํ•œ๋‹ค.

Last updated